【问题标题】:Outlook Redemption With Embedded Image带有嵌入图像的 Outlook 兑换
【发布时间】:2013-09-10 20:14:37
【问题描述】:

我使用 Outlook Redemption dll 用 c# 语言创建 Outlook 消息模板。

下面是我的代码:

RedemptionLoader.DllLocation64Bit = Server.MapPath("~/bin/dlls/Redemption64.dll");
RedemptionLoader.DllLocation32Bit = Server.MapPath("~/bin/dlls/Redemption.dll");

Interop.Redemption.RDOSession session = RedemptionLoader.new_RDOSession();

var msg = session.GetMessageFromMsgFile(templatePath);

msg.Subject = String.Format("Report");

String ImageString = Server.MapPath("~\\FolderName") + "\\" + ImageName;
RDOAttachment Attach = msg.Attachments.Add(ImageString);
Attach.ContentID = "image1";
String htb = "<html><head><title>The Title</title></head><body><h1>This is some text</h1>Image 1<br /><img src=cid:image1><br /></body></html>";

msg.HTMLBody = htb;
msg.Save();
msg.SaveAs(newPath);

所有工作和图像都保存到新位置。但是当我检查那个消息模板时,我在任何地方都看不到图像。它给了我错误,而不是图像。

更新 我没有尝试嵌入图像,而是尝试附加此文件。但是当我打开文件时,我没有看到任何附件。我用 OutlookSpy 检查附件总数,它显示了 0 个附件。我的代码附件错误吗?

【问题讨论】:

  • 您是否使用 OutlookSpy(单击 OpenIMsgOnIStg)查看了 MSG 文件以检查 HTML 是否正确以及附件是否存在正确的 PR_ATTACH__CONTENTID 值?
  • 我对outlookspy不熟悉,能不能详细点?
  • 单击 OpenIMsgOnIStg - 您将看到 IMessage 窗口。检查 PR_HTML 和 PR_RTF_COMPRESSSED 属性。转到 GetAttachmentTabel 选项卡 - 双击附件。 PR_ATTACH_CONTENTID 属性设置是否正确?
  • 我检查了这个属性,在 PR_RTF-COMPRESSED 上,我可以看到带有 cid:image1 的 img 标签,但在 GetAttachmentTable 上,我没有看到任何附件????
  • 截图的主题与您代码中设置的主题不匹配。可能是您的实际代码与您在此处发布的代码(非常轻微)不同吗?另外,考虑到 Server.MapPath,您是从 Web 应用程序运行它吗?

标签: c# outlook outlook-redemption


【解决方案1】:

我找到了解决方案。我需要两次调用会话。第一次将附件保存到我的模板文件,然后再次创建它的新实例。以下是我的代码:

        RedemptionLoader.DllLocation64Bit = Server.MapPath("~/bin/dlls/Redemption64.dll");
        RedemptionLoader.DllLocation32Bit = Server.MapPath("~/bin/dlls/Redemption.dll");


         Interop.Redemption.RDOSession session1 = RedemptionLoader.new_RDOSession();


        var msg1 = session1.GetMessageFromMsgFile(templatePath);


        msg1.Subject = String.Format("Report");

        String ImageString = Server.MapPath("~\\FolderName") + "\\" + ImageName;
        RDOAttachment Attach = msg1.Attachments.Add(ImageString);
        Attach.ContentID = "image1";
        String htb = "<html><head><title>The Title</title></head><body><h1>This is some text</h1>Image 1<br /><img src=cid:image1><br /></body></html>";

        msg1.HTMLBody = htb;
        msg1.Save();

        Interop.Redemption.RDOSession session = RedemptionLoader.new_RDOSession();


        var msg = session.GetMessageFromMsgFile(templatePath);
        msg.SaveAs(newPath);

这对我有用。

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 2012-12-08
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多