5

我现在用 Outlook 做什么:

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

问题是,我可以用 Thunderbird 来代替吗?Thunderbird 有 COM 接口吗?我一定是在谷歌上搜索错误的关键字,因为我还没有找到任何东西。

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

任何建议、文档链接或代码示例将不胜感激!

4

2 回答 2

5

检查此链接

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

还有一个用 Delphi 编写的开源 XPCOM 包装器。您可能也想检查一下。感谢Stijn指出这一点。

希望能帮助到你。

于 2009-06-09T13:01:38.650 回答
3

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

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

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

但是,请注意文件锁定问题。

于 2009-06-09T15:25:53.337 回答