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

C#-如何在包含图像的电子邮件中包含Outlook签名?,c#,outlook,C#,Outlook,以下是我在Outlook 2013中发送电子邮件的代码: public void GenerateEmail(OutEmail-OutEmail) { var objOutlook=新应用程序(); var mailItem=(mailItem)(objOutlook.CreateItem(OlItemType.olMailItem)); mailItem.To=outEmail.SendTo; mailItem.Subject=outEmail.Subject; mailItem.RTFBod

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

public void GenerateEmail(OutEmail-OutEmail)
{
var objOutlook=新应用程序();
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=objOutlook.Session.Accounts[”mail@email.com"];
mailItem.SendUsingAccount=账户;
mailItem.Send();
控制台。写入线(“完成”);
}
现在,
outEmail.Signature
将Outlook签名的HTML作为字符串包含在以下位置:
C:\Users\SO\AppData\Roaming\Microsoft\Signatures
除了包含图像外,还正确格式化签名。如何使用图像包含签名,以便在Outlook中创建新签名并将其包含在电子邮件中,而无需最终用户编辑签名HTML。我不介意以编程方式进行,但我需要确保它适用于所有可能添加的签名

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


干杯。

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

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


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

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

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

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

尝试下面提到的方法

mailItem.GetInspector.Activate();
var signature = mailItem.HTMLBody;
mailItem.HTMLBody = EmailBody + signature;
试试下面提到的

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

谢谢你的回复。你似乎总是来解救德米特里关于前景的问题。只是一个问题,GetInspector在发送电子邮件时是否会显示弹出窗口(我不想要弹出窗口,也无法测试atm)。另外,应该注意的是,我不想显示默认签名,我希望能够指定要显示的签名。GetInspector不会显示任何内容。在调用GetInspector之前,请尝试设置MailItem.SendUsingAccount。还要记住,在设置消息体之前必须调用GetInspector;设置时,必须将邮件正文中的签名与您试图设置的值合并。从我所知,MailItem.GetInspector.Activate()实际上会短暂显示邮件UI,然后再次关闭。它确实使签名看起来像假设的那样,但是如何防止它显示UI?不管怎样,似乎可以调用MailItem.GetInspector.CurrentItem();然后,它将不会打开任何内容,同时仍然具有插入签名的效果。它停止工作的版本是什么,它在最新版本中是否已修复?谢谢您的回复。你似乎总是来解救德米特里关于前景的问题。只是一个问题,GetInspector在发送电子邮件时是否会显示弹出窗口(我不想要弹出窗口,也无法测试atm)。另外,应该注意的是,我不想显示默认签名,我希望能够指定要显示的签名。GetInspector不会显示任何内容。在调用GetInspector之前,请尝试设置MailItem.SendUsingAccount。还要记住,在设置消息体之前必须调用GetInspector;设置时,必须将邮件正文中的签名与您试图设置的值合并。从我所知,MailItem.GetInspector.Activate()实际上会短暂显示邮件UI,然后再次关闭。它确实使签名看起来像假设的那样,但是如何防止它显示UI?不管怎样,似乎可以调用MailItem.GetInspector.CurrentItem();然后,它将不会打开任何内容,同时仍然具有插入签名的效果。它停止工作的版本是什么,并且在最新版本中已经修复了它?您不能盲目地连接两个HTML字符串,并期望返回一个格式良好的HTML字符串。必须合并这两个HTML字符串。不能盲目地连接两个HTML字符串,并期望返回一个格式良好的HTML字符串。必须合并这两个HTML字符串。