Cha*_*tha 7 email thunderbird command-line
Thunderbird 24.2.0 有一个-mail
命令行参数,使用它可以从命令行打开特定邮件:
$ thunderbird --help
-mail <URL> Open the message specified by this URL.
Run Code Online (Sandbox Code Playgroud)
我知道可以使用此功能通过imap://
URI打开特定电子邮件,但我希望能够通过其唯一的 Message-ID 打开特定邮件,无论哪个文件夹包含它。这可能吗,如果可能,URI 是什么样的?
Thunderlink 附加组件(https://addons.mozilla.org/en-us/thunderbird/addon/thunderlink/)可以创建基于消息 ID 的电子邮件链接,然后使用-thunderlink
参数打开这些链接,但我仍然想知道这是否可以仅使用-mail
参数来完成。
2021-03-18 更新:下面提到的错误已在Thunderbird 版本 78.8.1中修复。使用Thunderbird.exe -mail <URL>从命令行打开邮件无需进行任何调整。
-mail
当前 Thunderbird 版本仍然可以使用命令行参数打开消息(在Windows 10版本78.6.0,32 位上测试)。
但是,这需要对 module 进行一些小的更改MailNewsCommandLineHandler.jsm
,否则在调用 -mail 命令时会发生仅 getter 错误。可以通过 Thunderbird 错误控制台跟踪错误(见下文)。
调整模块:
将文件复制c:\Program Files (x86)\Mozilla Thunderbird\omni.ja
到临时目录中,将文件重命名为omni.zip
并将其解压。
打开MailNewsCommandLineHandler.jsm,插入
set _messenger(value) {
return value;
},
Run Code Online (Sandbox Code Playgroud)
在第 22 行之后并保存文件。
使用以下参数重新打包zip.exe -0DXqr omni.ja *
所有文件: . 将原文件重命名为omni.ja.bak
并将重新打包的文件复制到c:\Program Files (x86)\Mozilla Thunderbird
.
然后可以使用以下命令行打开消息:
thunderbird.exe -mail "mailbox-message://<folderLocation>#<messageKey>" (for local folders)
thunderbird.exe -mail "imap-message://<folderLocation>#<messageKey>" (for IMAP folders)
Run Code Online (Sandbox Code Playgroud)
找到正确的网址:
错误控制台:打开 TB,选择一条消息并打开错误控制台 (Ctrl + Shift + J)。输入行
var hdr = gFolderDisplay.selectedMessage; alert(hdr.folder.getUriForMsg(hdr));
Run Code Online (Sandbox Code Playgroud)
并按回车键。这将打开一个窗口,其中包含所选消息的 URL。
SQLite database: If you plan to build your own search tool (e.g. by writing a Python plugin for the Wox desktop launcher), it is perhaps best to create the URLs dynamically.
The Thunderbird database can be found under %APPDATA%\Thunderbird\Profiles\<profile>\global-messages-db.sqlite
. The tables messagesText_content, messages and folderLocations contain all information needed to assemble the URL strings.
A simple Python script that can be used to generate the URLs might look something like this:
set _messenger(value) {
return value;
},
Run Code Online (Sandbox Code Playgroud)
Just use it like so:
<C:\>python collect_urls.py search terms test message
{
"imap-message://a%40b.cd@imap.provider.com/INBOX#28649": {
"text": "Test message contains search terms",
"subject": "Test message",
"attachments": "",
"sender": "John Doe <e@f.gh>",
"receiver": "i@j.kl",
"date": "2022-10-02, 14:20",
"folder_id": 607,
"message_key": 28649
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5213 次 |
最近记录: |