Откуда экземпляр Outlook.MailItem знает, каков целевой сервер Exchanger? - PullRequest
1 голос
/ 16 августа 2011

Я пытаюсь отправить электронное письмо из приложения C #, и я могу легко завершить эту работу через следующие строки (я использую Outlook 2003, и у меня есть учетная запись Outlook):

Outlook.ApplicationClass oapp = new Outlook.ApplicationClass();
omessage = oapp.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;
omessage.To = "abc@cba.com";
omessage.Subject = "Send From WinForm";
omessage.Body = "Hi, This message is send from a winform project.";
omessage.Send();

На основе приведенного выше кода электронное письмо может быть успешно отправлено (хотя перед отправкой электронного письма будет отображаться предупреждение).

У меня вопрос: откуда этот элемент omessage знает, где находится мой сервер Exchange, а я никогда не настраивал свой сервер Exchange в этом приложении?

Существует ли какой-либо способ получить имя сервера Exchange со стороны кода? Потому что мне действительно нужен этот адрес сервера.

Спасибо!

1 Ответ

1 голос
/ 16 августа 2011

Вы используете C # outlook dll \ add-in, ваше приложение использует outlook для отправки этого почтового элемента.Все свойства, включая адрес сервера обмена, настраиваются в outlook.Вот метод, который предоставляет адрес сервера обмена в коде:

Outlook.ApplicationClass oapp = new Outlook.ApplicationClass();
Outlook.NameSpace ns = oapp.GetNamespace("MAPI");
ns.Logon();

string ExchangeServer = ns.ExchangeMailboxServerName;

Обратите внимание, что вы должны определить свойство Outlook.namespace для получения адреса через MAPI

...