使用Delphi在Thunderbird上的InBox中读取电子邮件子文件夹

时间:2019-01-19 18:25:03

标签: delphi

我需要从Thunderbird电子邮件客户端读取所有帐户Inbox及其所有子文件夹的电子邮件。

如何更改代码以读取每个子文件夹中的所有电子邮件?

谢谢

使用此代码(从Jedy库的示例获取),我仅从默认的InBox文件夹中读取电子邮件:

DownloadsListView.Items.Clear;
JvMail1.LogonOptions := [JvMail.loNewSession, JvMail.loDownloadMail];
JvMail1.LogOn;
try
  b := JvMail1.FindFirstMail;
  while b do
  begin
    JvMail1.ReadOptions := [roFifo, roHeaderOnly, roPeek];
    JvMail1.ReadMail;
    with DownloadsListView.Items.Add do
    begin
      Caption := JvMail1.Subject;
      SubItems.Add(JvMail1.ReadedMail.RecipientName);
      SubItems.Add(DateTimeToStr(JvMail1.ReadedMail.DateReceived));
    end;
    b := JvMail1.FindNextMail;
  end;
finally
  JvMail1.LogOff;
  JvMail1.Clear;
  DownloadsListView.BringToFront;
end;

1 个答案:

答案 0 :(得分:2)

TJvMail是SimpleMAPI的包装,它没有子文件夹的概念,并且只能访问配置文件的收件箱。您可能需要使用CDO或扩展MAPI才能完全访问配置文件的子文件夹,但是TJvMail不支持该子文件夹。

Differences between CDO, Simple MAPI, and Extended MAPI

或者,使用IMAP协议(例如通过Indy的TIdIMAP4组件)直接访问电子邮件服务器,而不是访问用户的本地电子邮件客户端。