【问题标题】:Outlook HTML Mail - changing linked items to embeddedOutlook HTML 邮件 - 将链接项目更改为嵌入
【发布时间】:2010-10-04 22:07:24
【问题描述】:

我正在尝试通过 Outlook.MailItem 使用 C# 3 发送 HTML 格式的电子邮件

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 Property 的文档说“BodyFormat 属性从 RTF 切换到 HTML 时,所有文本格式都会丢失,反之亦然”。

遗憾的是,似乎没有一种简单的方法可以将MailItem.Attachements 中每个AttachmentType 更改为OlAttachmentType.olByValue,因为它是在您创建Attachment 时设置的只读属性。

想到的一种方法是遍历 HTML,用标记替换 <img> 标记,并以编程方式遍历 MailItem 文本,插入 Outlook.AttachmentType OlAttachmentType.olByValue

另一种选择是将<img> 链接转换为使用src="cid:uniqueIdN" 并将图像添加为具有引用身份的附件。

所以,对于这个问题...有没有办法将链接图像转换为嵌入图像,最好不要使用第三方工具,如 Redemption?转换为 RTF 恰好会产生结果,但这样做绝不是先决条件,而且显然可能会失去保真度 - 我只是想让它正常工作:D 我现有的想法对我来说听起来都不干净。

【问题讨论】:

    标签: html image rtf attachment outlook-object-model


    【解决方案1】:

    DOH!,实际上发送 Outlook 2007 中的电子邮件会强制嵌入图像。

    8K 的已发送项目大小比我看到的 60K (RTF) 的草稿大小与 1K 的草稿大小(尚未转换为 RTF 并再次转换回来的 HTML)小得多。

    所以它一直在做我的意思。呸。

    我将把 Q 和 A 留在这里,以防它对有类似困惑的人有所帮助。

    顺便说一句,我在旅途中发现了一些有用的链接:

    Sending emails example

    General Q&A site with other examples of varying quality

    【讨论】:

      【解决方案2】:

      由于您使用的是 .net > 2.0,您可能需要查看 System.Net.Mail 命名空间以创建邮件消息。我发现它非常可定制,并且非常易于用于与您类似的任务。我遇到的唯一问题是确保我使用了正确的encoding,并且我必须使用 HTML 表格进行布局(css 无法正常工作)。这里有一些链接向您展示它是如何工作的......

      如果这不是一个选项,那么我建议采用 Content ID 路线并将图像嵌入为附件。您的另一个选择是在网站上公开托管图像,并将 html 中的图像链接更改为公共图像。

      您应该知道的是,HTML 电子邮件很容易看起来像垃圾邮件,并且可以被电子邮件服务器和客户端视为垃圾邮件。即使是那些仅供内部使用的(它发生在我身上)也可能最终出现在 Outlook 的垃圾邮件文件夹中......

      【讨论】:

      • 感谢您的回复,并很抱歉我最近的羞怯回复几乎使我提出这个问题的必要性无效。
      • 非常好的一点,在开发时密切关注垃圾邮件文件夹(或者在我的情况下,发送邮件文件夹是个好主意:D)重新使用 SNM 点,我开始了吗从新鲜开始,我肯定会走那条路,但代码就是代码!非常感谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2013-10-30
      • 2013-04-17
      • 1970-01-01
      • 2012-03-30
      • 2020-11-07
      • 1970-01-01
      相关资源
      最近更新 更多