【问题标题】:C# - How to include Outlook signature in an email that contains images?C# - 如何在包含图像的电子邮件中包含 Outlook 签名?
【发布时间】:2014-09-13 07:30:16
【问题描述】:

这是我在 Outlook 2013 中发送电子邮件的代码:

public void GenerateEmail(OutEmail outEmail)
{
    var objOutlook = new Application();
    var mailItem = (MailItem)(objOutlook.CreateItem(OlItemType.olMailItem));
    mailItem.To = outEmail.SendTo;
    mailItem.Subject = outEmail.Subject;

    mailItem.RTFBody = outEmail.Body + outEmail.Signature;
    mailItem.Attachments.Add(outEmail.Attachment);

    Outlook.Account account = objOutlook.Session.Accounts["mail@email.com"];
    mailItem.SendUsingAccount = account;
    mailItem.Send();
    Console.WriteLine("done");
}

现在,outEmail.Signature 包含 Outlook 签名的 HTML 作为字符串,位于:C:\Users\SO\AppData\Roaming\Microsoft\Signatures 除了包含图像之外,它还正确地格式化了签名。如何在图像中包含签名,以便可以在 Outlook 中创建新签名并将其包含在电子邮件中,而无需最终用户编辑签名 HTML。我不介意以编程方式执行此操作,但我需要确保它适用于所有可能添加的签名。

编辑:可能的解决方案?在 HTML 中,找到 img 标记的实例并删除 {SignatureName}_FILES\,然后将 {SignatureName}_FILES\ 文件夹中的所有内容附加到电子邮件?

干杯。

【问题讨论】:

    标签: c# outlook


    【解决方案1】:

    试试下面提到的

    mailItem.GetInspector.Activate();
    var signature = mailItem.HTMLBody;
    mailItem.HTMLBody = EmailBody + signature;
    

    【讨论】:

    • 您不能盲目地连接 2 个 HTML 字符串并期望得到格式正确的 HTML 字符串作为回报。这两个 HTML 字符串必须合并。
    【解决方案2】:

    当您调用MailItem.Display 或访问MailItem.GetInspector 时,Outlook 会插入签名(您不必对返回的对象执行任何操作)。

    如果您想以编程方式插入签名,Redemption(我是它的作者)公开实现ApplyTo 方法的RDOSignature 对象。

    更新:从 Outlook 的最新(2017 年夏季)版本开始,GetInspector 技巧不再有效。现在只有 MailItem.Display 将签名添加到未修改的消息中。

    【讨论】:

    • 感谢您的回复。您似乎总是在 Outlook 问题上帮助 Dmitry。只是一个问题,GetInspector 在发送电子邮件时是否显示弹出窗口(我不想要弹出窗口并且无法测试 atm)。另外,需要注意的是,我不想显示默认签名,我希望能够指定要显示的签名。
    • GetInspector 不会显示任何内容。在调用 GetInspector 之前尝试设置 MailItem.SendUsingAccount。另请记住,必须在设置消息正文之前调用 GetInspector;并且当您设置它时,您必须将消息正文中的签名与您尝试设置的值合并。
    • 据我所知,MailItem.GetInspector.Activate() 实际上会短暂显示 MailMessage UI,然后再次关闭。它确实使签名看起来像预期的那样,但是如何防止它显示 UI?
    • 没关系,好​​像可以调用 MailItem.GetInspector.CurrentItem();然后它不会打开任何东西,同时仍然具有插入签名的效果。
    • 哪个版本停止工作,是否已在最新版本中修复?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2020-02-08
    • 2010-11-20
    • 2023-03-18
    • 2016-03-20
    相关资源
    最近更新 更多