我以前曾在这里问过一个问题。 replace-cidimage-refrences-in-email-body之所以出现这个问题,是因为我正在编写一个基本的电子邮件归档程序/已归档的电子邮件查看器。
我使用
救了尸体IdMessage.Body.SaveToFile(FileName);
用该主体中的CID引用替换为base64编码的图像后,从数据库中的blob字段加载后,结果HTML将显示在TWebBrowser
组件中。所以我现在有一个电子邮件查看器。
下一个要求是允许回复此电子邮件。我在TWebBrowser上方添加了TEdit
,UI用户可以在其中键入单行回复,并且我正在使用一些代码来修补html正文以插入回复行
Reply := '<p class=MsoPlainText>';
Reply := Reply + edReply.Text + '<br>';
Reply := Reply + '<br>-----Previous Message-----<br><br>';
Reply := Reply + '</p>';
在该正文的第一个<p class=MsoPlainText
之前。通过IdSMTP发送的这封电子邮件看起来不错,但是Outlook根本不希望显示这些内嵌base64编码的图像。我需要回到我开始的地方!
我很想做这样的事情:
收到原始邮件后,请完全使用此邮件保存
IdMessage.SaveToFile(FBasePath + 'raw_' + MessageID + '.html'); // works, and can be read by M$ Word
然后将其表达为回复
IdMessage.LoadFrom(FBasePath + 'raw_' + MessageID + '.html');
IdMessage.Recipients.EmailAddresses := IdMessage.From.Address;
IdMessage.From.Address := repliersaddress;
但是现在的问题是,如何将回复文本添加到此html电子邮件中。
IdMessage.InsertReply(edReply.Text); // would be great
谢谢