reg*_*gie 26 c# winforms outlook-2003
我正在使用它Microsoft.Office.Interop.Outlook.Application来生成电子邮件并在用户发送之前将其显示在屏幕上.应用程序是一个winform编码的应用C#中.NET Framework 3.5 SP1,它是Microsoft Outlook 2003.我使用以下代码:
public static void GenerateEmail(string emailTo, string ccTo, string subject, string body)
{
var objOutlook = new Application();
var mailItem = (MailItem)(objOutlook.CreateItem(OlItemType.olMailItem));
mailItem.To = emailTo;
mailItem.CC = ccTo;
mailItem.Subject = subject;
mailItem.HTMLBody = body;
mailItem.Display(mailItem);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如何在body生成的电子邮件中插入/添加正在使用该应用程序的用户的默认签名?
任何帮助赞赏.
Mic*_*van 46
有一个非常简单的方法,没有提到.见下面的修改:
public static void GenerateEmail(string emailTo, string ccTo, string subject, string body)
{
var objOutlook = new Application();
var mailItem = (MailItem)(objOutlook.CreateItem(OlItemType.olMailItem));
mailItem.To = emailTo;
mailItem.CC = ccTo;
mailItem.Subject = subject;
mailItem.Display(mailItem);
mailItem.HTMLBody = body + mailItem.HTMLBody;
}
Run Code Online (Sandbox Code Playgroud)
通过在显示邮件项目后编辑HTMLBody,您允许Outlook执行添加默认签名的工作,然后进行复制,编辑和追加.
Jam*_*ill 18
请看下面的链接.它解释了在文件系统中可以找到签名的位置以及如何正确读取它们.
http://social.msdn.microsoft.com/Forums/en/vsto/thread/86ce09e2-9526-4b53-b5bb-968c2b8ba6d6
该线程仅提到Window XP和Windows Vista签名位置.我已确认Windows 7上的Outlook签名与Vista位于同一位置.我还确认了Outlook 2003,2007和2010的签名位置相同.
如果您选择这条路线,这是一个代码示例.取自本网站.
private string ReadSignature()
{
string appDataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Microsoft\\Signatures";
string signature = string.Empty;
DirectoryInfo diInfo = new DirectoryInfo(appDataDir);
if(diInfo.Exists)
{
FileInfo[] fiSignature = diInfo.GetFiles("*.htm");
if (fiSignature.Length > 0)
{
StreamReader sr = new StreamReader(fiSignature[0].FullName, Encoding.Default);
signature = sr.ReadToEnd();
if (!string.IsNullOrEmpty(signature))
{
string fileName = fiSignature[0].Name.Replace(fiSignature[0].Extension, string.Empty);
signature = signature.Replace(fileName + "_files/", appDataDir + "/" + fileName + "_files/");
}
}
}
return signature;
}
Run Code Online (Sandbox Code Playgroud)
编辑:请参阅此处以查找 Outlook 2013 的默认签名名称或@ japel在2010此主题中的答案.
Tew*_*ewr 15
我有完全相同的问题,但只能使用Interop解决它,因此获得默认签名.
诀窍是调用GetInspector,它会将HTMLBody属性神奇地设置为签名.只需阅读GetInspector属性即可.我用Windows 7/Outlook 2007测试了这个.
我找到了一种非常简单的方法来附加默认的 Outlook 签名(包括图像)。诀窍是在调用 GetInspector 并将您的消息连接到该消息后检索正文消息。
Imports Microsoft.Office.Interop
Dim fdMail As Outlook.MAPIFolder
Dim oMsg As Outlook._MailItem
oMsg = fdMail.Items.Add(Outlook.OlItemType.olMailItem)
Dim olAccounts As Outlook.Accounts
oMsg.SendUsingAccount = olAccounts.Item(1)
oMsg.Subject = "XXX"
oMsg.To = "xxx@xxx.com"
Dim myInspector As Outlook.Inspector = oMsg.GetInspector
Dim text As String
text = "mail text" & oMsg.HTMLBody
oMsg.HTMLBody = text
oMsg.Send()
Run Code Online (Sandbox Code Playgroud)
2021 年 5 月 3 日编辑 请注意,使用内部版本 13530.20440 或更高版本的 Office 365 时,此方法似乎失败。您将收到“抱歉,出了点问题。您可能想再试一次”消息。还在等待修复。