2

使用 Delphi 6,我使用以下行将电子邮件附加到使用 IMAP 发送的文件夹中:

if IMAPClient.Connected then begin
  IMAPClient.AppendMsg(EMAIL_SENT_FOLDER, TheMessage, TheMessage.Headers, [mfSeen]);
end;

如果电子邮件有 PDF 之类的附件,则只会保存正文文本,这没关系。发件人,收件人和主题也如预期的那样正常。

使用 Delphi XE2 中的同一行代码,附带的 Indy 10 以及带有 PDF 等附件的电子邮件在已发送文件夹中为我提供了一封电子邮件,其中没有主题、没有发件人、没有收件人,并且电子邮件正文是 base64编码乱码。

这是一条 MIME 格式的多部分消息

--IstrI1aZj8jaD7S1JQXJK8dreduqQL=_Kv Content-Type: text/plain Content-Transfer-Encoding:quoted-printable Content-Disposition: inline

测试带有附件的电子邮件正文

--IstrI1aZj8jaD7S1JQXJK8dreduqQL=_Kv 内容类型:应用程序/pdf;name="87122F343A2A49E48B22BD24376524FC.pdf" 内容传输编码:base64 内容处置:附件;文件名="87122F343A2A49E48B22BD24376524FC.pdf"

JVBERi0xLjQNCiXi48/TDQoxMSAwIG9iag0KPDwNCi9UeXBlL0Fubm90L0JvcmRlciBbXS9IL0kv - base 64 的东西被移除 -

编辑 - 实际上,我附加到已发送文件夹的任何电子邮件都没有主题、发件人或收件人。如果没有附件,身体基本没问题,但身体后两行有一个错误的时期。

电子邮件正文测试

.

真正的问题是使用 IMAP 附加到已发送文件夹的任何电子邮件中都缺少发件人、主题或收件人。

在我看来,我需要对较新的 Indy 组件做一些不同的事情,但我似乎无法弄清楚我到底需要做什么。

任何建议表示赞赏。

干杯! TJ

4

1 回答 1

1

将“TheMessage.Headers”更改为“TheMessage.LastGeneratedHeaders”。

主题和收件人将在那里。您的附件仍将使用 Base64。我不知道解决办法。

于 2012-11-30T17:18:30.803 回答