Как преобразовать адрес электронной почты текущего пользователя в строку в Outlook, используя C#? - PullRequest
0 голосов
/ 21 февраля 2020

Я создал собственный плагин VSTO в Outlook 2016, который просит пользователя прикрепить файл, затем файл добавляется в ответ по электронной почте и автоматически отправляется.

public void Attachment_Click(Office.IRibbonControl control)
        {
            Outlook.Explorer explorer = Globals.ThisAddIn.Application.ActiveExplorer();
            if (explorer != null)
            {
                Outlook.Selection selection = explorer.Selection;
                if (selection.Count >= 1)
                {
                    Outlook.MailItem mailItem = selection[1] as Outlook.MailItem;
                    OpenFileDialog attachment = new OpenFileDialog();
                    attachment.Title = "Add your file";
                    attachment.ShowDialog();

                    if (mailItem != null) //could be something other than MailItem
                    {
                        Outlook.MailItem response = mailItem.ReplyAll();
                        bool retValue = false;
                        response.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
                        response.HTMLBody = "<p>MESSAGE</p>" + response.HTMLBody;
                        response.Attachments.Add(attachment.FileName, Outlook.OlAttachmentType.olByValue, 1,"Attachment.pdf");
                        response.Send();
                        mailItem.Delete();
                    }
                }
            }
        }

Я пытаюсь настройте код, чтобы он автоматически добавлял другое вложение в зависимости от пользователя, вошедшего в Outlook, например, если user=user1@company.com добавить '\ fileshare \ file1.pdf', если user=user2@company.com добавить '\ fileshare \ file2.pdf'

Возможно ли это?

Я пытаюсь преобразовать текущий адрес пользователя в строку, используя приведенное ниже, но безуспешно:

{
 return 
Globals.ThisAddIn.Application.ActiveExplorer().Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress.ToString();
}

1 Ответ

0 голосов
/ 21 февраля 2020

Ваш код потерпит неудачу, если нет активного проводника, но он вам действительно не нужен. От макушки моей головы:

AddressEntry cu = Globals.ThisAddIn.Application.Session.CurrentUser.AddressEntry;
ExchangeUser eu = cu.GetExchangeUser();
return (eu == null) ? cu.Address : eu.PrimarySmtpAddress;
...