我正在尝试通过 C# 3 发送 HTML 格式的电子邮件Outlook.MailItem
Outlook.MailItem objMail = (Outlook.MailItem)olkApp.CreateItem(Outlook.OlItemType.olMailItem);
objMail.To = to;
objMail.Subject = subject;
objMail.HTMLBody = htmlBody;
电子邮件是通过从 RTF 控件(TX 文本控件)保存而在外部生成的,该控件生成 HTML,其中包含指向存储在<<FileName>>
_files 子目录中的图像的链接。例子:
<img border="0" src="file:///C:/Documents%20and%20Settings/ItsMe/Local%20Settings/Temp/2/zbt4dmvs_Images/zbt4dmvs_1.png" width="94" height="94" alt="[image]">
以这种方式发送电子邮件会生成链接损坏的邮件。
使用 Outlook 2007 作为电子邮件客户端和 Word 作为电子邮件编辑器,切换到 RTF(选项选项卡、格式选项卡组)可以保留布局并内联图像。
通过以下方式以编程方式执行此操作:
var oldFormat = objMail.BodyFormat;
objMail.BodyFormat = Outlook.OlBodyFormat.olFormatRichText;
objMail.BodyFormat = oldFormat;
丢失格式并破坏图像(图像成为[image]
屏幕上的链接标记,可单击但不再显示图像)。这并不奇怪,因为MailItem.BodyFormat 属性的文档说“当属性从 RTF 切换到 HTML 时,所有文本格式都会丢失,BodyFormat
反之亦然”。
可悲的是,似乎没有一种简单的方法来更改 to 中的each Type
,因为它是在创建.Attachment
MailItem.Attachements
OlAttachmentType.olByValue
Attachment
想到的一种方法是遍历 HTML,用标记替换
标签并以编程方式遍历<img>
MailItem
文本,插入一个Outlook.Attachment
of Type
OlAttachmentType.olByValue
.
另一种选择是转换
要使用的链接<img>
并将图像添加为具有引用身份的附件。src="cid:uniqueIdN"
那么,对于这个问题......有没有办法将链接图像转换为嵌入图像,最好不要进入第三方工具,如 Redemption?转换为 RTF 碰巧会产生结果,但这样做绝不是先决条件,而且显然可能会失去保真度 - 我只是想让它正常工作:D 我现有的想法对我来说听起来都不干净。