使用 Thunderbird 命令行,如何通过消息 ID 打开特定电子邮件?

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参数来完成。

小智 5

...对于仍在寻找解决方案的任何人...
以下命令对我有用(thunderbird 102.6.1):

thunderbird mid:<the message ID>

为了让这一切变得美好而简单:

  1. 确保“thunderbird”命令位于 PATH 中(例如,您可以在终端中执行它)
  2. 安装复制消息 ID插件
  3. 在首选项中添加以下前缀:( thunderbird mid:
    确保前后没有空格!)
  4. 打开电子邮件并单击Copy Message ID按钮
  5. 在终端中运行复制的命令以打开邮件


Tob*_*fer 2

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 错误控制台跟踪错误(见下文)。

调整模块:

  1. 将文件复制c:\Program Files (x86)\Mozilla Thunderbird\omni.ja到临时目录中,将文件重命名为omni.zip并将其解压。

  2. 打开MailNewsCommandLineHandler.jsm,插入

    set _messenger(value) {
        return value;
    }, 
    
    Run Code Online (Sandbox Code Playgroud)

    在第 22 行之后并保存文件。

  3. 使用以下参数重新打包zip.exe -0DXqr omni.ja *所有文件: . 将原文件重命名为omni.ja.bak并将重新打包的文件复制到c:\Program Files (x86)\Mozilla Thunderbird.

  4. 然后可以使用以下命令行打开消息:

    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)