如何使用Delphi从Thunderbird获取电子邮件消息

时间:2009-06-09 12:43:05

标签: delphi thunderbird

我现在用Outlook做什么:

我收到产品的电子邮件订单。我在Outlook中选择一个或多个电子邮件(一个订单可以有多个与之关联的电子邮件),然后切换到我的Delphi编码的OrderManager程序并单击“导入”。它使用Outlook的COM自动化界面来读取每条消息的文本,解析并处理每条消息。

问题是,我可以使用Thunderbird代替吗? Thunderbird有COM接口吗?我必须使用Google搜索错误的关键字,因为我还没有找到任何内容。

顺便说一句,我确实有一个版本的OrderManager,它只是使用Indy从我的电子邮件服务器直接读取电子邮件,但出于几个原因,我想尝试从Firefox中读取它们。

非常感谢任何建议,文档链接或代码示例!

2 个答案:

答案 0 :(得分:5)

检查此link

您可以围绕XPCOM编写C或C ++包装器,然后在Delphi中使用该包装器。

还有一个开源XPCOM wrapper written in Delphi。您可能也想检查一下。感谢Stijn指出了这一点。

希望它有所帮助。

答案 1 :(得分:3)

您也可以自己解析Thunderbird的邮箱文件。

  • %APPDATA%\Thunderbird\profiles.ini,阅读个人资料文件夹所在的位置(如果有多个个人资料,请查看Profile 0 部分Profile n 为具有值Default=1
  • 的那个
  • 个人资料文件夹的Mail和/或ImapMail个子文件夹的每个子文件夹代表一个帐户(Mail包含POP帐户,ImapMail包含IMAP帐户);
  • 查看名称不以.dat或.msf,结尾的所有文件,其内容以“From”(F,r,o,m和空格)开头。这些是mailbox files
  • 以“From ”开头的每一行都表示新邮件。使用X-Mozilla-Status header确定邮件是否仍然有效,或者邮件是否已标记为删除。 (如果需要,可以使用CDO.Message COM对象为您解析消息。

你应该递归每个以'.sbd'结尾的子文件夹,因为它将包含该邮箱的子文件夹(例如Inbox.sbd将包含收件箱下的邮件文件夹)。

但请注意文件锁定问题。