Как подключиться к определенной учетной записи Outlook / Exchange?

Я создаю приложение для доступа к определенной учетной записи электронной почты, размещенной на сервере Exchange 2003, и выполняю некоторые действия с найденными непрочитанными сообщениями электронной почты. Я не очень хорошо разбираюсь в том, как работает MAPI, поэтому не удивлюсь, если пропущу что-то очень очевидное! Я (к сожалению) использую C #, я читал о проблемах, которые это может вызвать (и я боюсь последствий, но мой босс хочет, чтобы это было сделано вот так ...) .

Я изо всех сил пытаюсь найти какую-либо полезную информацию о том, как подключиться к определенной учетной записи! Приложение будет запускаться с чьего-то портативного компьютера (скажем, моего), поэтому будет учетная запись по умолчанию, к которой Outlook подключается при открытии. Так:

  • Можно ли подключиться к другой учетной записи с компьютера, на котором у пользователя уже есть собственная учетная запись и, вероятно, открыт Outlook?

  • Если это возможно. Как мне это сделать? При запуске объектов взаимодействия Outlook приложение автоматически получает учетную запись пользователя и устанавливает ее для текущего пользователя. Я надеялся, что метод Logon() отсортирует это, но нет. Даже просто запущенный Outlook.Application olApp = new Outlook.Application(); Заходит и устанавливает для текущего пользователя стандартную учетную запись.

Надеюсь, я понимаю (вероятно, нет), но не стесняйтесь задавать более подробные вопросы в комментариях, и я отвечу как можно быстрее. Как я уже сказал, я очень мало знаю о MAPI и Exchange, поэтому мне сложно сформулировать свой вопрос.


person Jammerz858    schedule 19.07.2012    source источник


Ответы (3)


Если вы хотите подключиться к определенной учетной записи электронной почты в Exchange 2003, вам необходимо использовать WebDAV, CDOEX или ExOLEDB. Если вы использовали Exchange 2007+, вы могли бы использовать EWS.

Outlook Interop позволит вам подключиться только в качестве учетной записи интерактивного рабочего стола (текущий авторизованный пользователь). Единственный способ подключиться к другим учетным записям - это если текущая интерактивная учетная запись имеет добавил общий почтовый ящик.

person SliverNinja - MSFT    schedule 19.07.2012
comment
(вздох) ... Я подозревал, что это может быть так, но пришлось пойти другим путем. Спасибо за совет. Ссылки - полезные отправные точки. - person Jammerz858; 19.07.2012

Если у вас есть две учетные записи, определенные на одном компьютере, вы можете использовать следующее: пример

Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");

// optional
//object missing = Type.Missing;
//ns.Logon(missing, missing, true, false);

// additional email address 
string recipientName = "myEmail@myDomain";

Outlook.Recipient recip = ns.CreateRecipient(recipientName);
recip.Resolve();

if (recip.Resolved)
{
Outlook.MAPIFolder inboxFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox);
}
person Lev Z    schedule 30.08.2015

Вы также можете использовать для этого Redemption - запустите свой код как пользователь домена, который может получить доступ к почтовых ящиков, о которых идет речь, вызовите RDOSession .LogonExchangeMailbox для этого пользователя, затем откройте почтовые ящики других пользователей, используя RDOSession ._2 _ / _ 3_.

Поскольку Exchange 2013 больше не поддерживает подключения RPC старого стиля (только RPC-over-HTTP или MAPI-over-HTTP), вы можете использовать RDOSession.LogonHostedExchangeMailbox (работает как для Exchange 2013, так и для Exchange 2010).

person Dmitry Streblechenko    schedule 19.07.2012