如何将Outlook中的用户邮件签名附加到以编程方式创建的电子邮件中

时间:2010-07-05 23:13:22

标签: c# outlook-addin

我有一个OL插件(c#com使用addin express)正在做这样的事情

mailItem = (Outlook.MailItem)OutlookApp.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.To = ReceipientEmailAddress;
mailItem.Subject = "SOME TEXT";
mailItem.Body = NewBody;
mailItem.Display(false);

然而,这会导致默认签名消失 我假设这是因为正在设置newBody 我无法以任何方式阅读签名或导致邮件创建包含签名

哦这是OL 2007 .NET 2.0

2 个答案:

答案 0 :(得分:7)

我遇到了同样的问题并且没有找到答案,所以我决定亲自解决这个问题,这就是我所做的。

       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;
    }

希望这有帮助。

答案 1 :(得分:1)

这对我来说没有任何额外的代码。


                            olMail = outlook.CreateItem(0);  
                            olMail.To = toEmailID;
                            olMail.Subject = "Subject";

                            if (attachments != null)
                            {
                                foreach (var path in attachments)
                                {
                                    olMail.Attachments.Add(path);
                                }
                            }

                            olMail.Display();
                            //Display email first and then write body text to get original email template and signature text.

                            if (string.IsNullOrWhiteSpace(htmlBody))
                            {
                                if (!string.IsNullOrWhiteSpace(body))
                                {
                                    olMail.Body = body + olMail.Body;
                                }
                            }
                            else
                            {
                                olMail.HTMLBody = htmlBody + olMail.HTMLBody;
                            }

希望这有帮助。