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