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

时间:2014-09-13 07:30:17

标签: c# outlook

以下是我在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\文件夹中的所有内容附加到电子邮件中?

干杯。

2 个答案:

答案 0 :(得分:1)

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

如果要以编程方式插入签名,Redemption会公开RDOSignature实现ApplyTo方法的对象。

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

答案 1 :(得分:1)

尝试下面提到的

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