C#-如何在包含图像的电子邮件中包含Outlook签名

本文关键字:包含 电子邮件 Outlook 签名 图像 C#- | 更新日期: 2023-09-27 18:21:41

这是我在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签名

尝试下面提到的

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

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

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

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