Как добавить подпись User Mail в Outlook к электронному письму, созданному программно - PullRequest
2 голосов
/ 06 июля 2010

У меня есть OL addin (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 ]

7 голосов
/ 25 марта 2011

У меня была такая же проблема, и я не нашел ответа, поэтому я решил решить ее самостоятельно, получив подпись вручную, вот что я сделал.

       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 голос
/ 10 декабря 2013

Это работает для меня без дополнительного кода.


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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...