2012-11-30 19 views
2

用Delphi 6我用下面的行使用IMAP電子郵件附加到發送文件夾:附加電子郵件丟失使用印IMAP和Delphi XE2發件人,主題,收件人

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 內容類型:文本/無格式內容 傳送編碼:引號的可打印 內容處置:直列

測試電子郵件主體與附件

--IstrI1aZj8jaD7S1JQXJK8dreduqQL = _Kv 內容類型:應用/ PDF; name =「87122F343A2A49E48B22BD24376524FC.pdf」 Content-Transfer-Encoding:base64 Content-Disposition:attachment; 文件名= 「87122F343A2A49E48B22BD24376524FC.pdf」

JVBERi0xLjQNCiXi48/TDQoxMSAwIG9iag0KPDwNCi9UeXBlL0Fubm90L0JvcmRlciBbXS9IL0kv - 臺64東西去掉 -

編輯 - 其實我追加到發送文件夾的任何電子郵件不具有主題,發件人,收件人也沒有。如果沒有附件,身體大部分都可以,但是在身體後面有兩行錯誤的時期。

電子郵件正文測試

這裏真正的問題是缺少使用IMAP附加到發送文件夾的任何電子郵件中的發件人,主題或收件人。

在我看來,我需要做一些與更新的Indy組件不同的東西,但我似乎無法弄清楚我需要做什麼。

任何意見表示讚賞。

乾杯! TJ

+1

如果您要使用相同的郵件標題,則不必重新包含標題。調用超載:IMAPClient.AppendMsg(EMAIL_SENT_FOLDER,TheMessage,[mfSeen]); – jachguate

+1

也許你想閱讀[Remy的回覆](http://stackoverflow.com/a/8232252/255257)。注意NoEncode/NoDecode提到的黑客攻擊,因爲它可能是解決您的問題的方法。 – jachguate

回答

1

將「TheMessage.Headers」更改爲「TheMessage.LastGeneratedHeaders」。

主題,收件人將在那裏。你的附件仍然在Base64中。我不知道這個問題的解決方法。

+0

在這種情況下使用'LastGeneratedHeaders不起作用,因爲'AppendMsg()'會在內部創建新的'LastGeneratedHeaders()'值。 –

+0

它確實使主題和收件人顯示。 – Paul

相關問題