Я пишу программу C#, которая использует MAPI. Я знаю, что для этого нужно использовать другой язык, но мне сказали использовать .NET. У меня запущено приложение, но у меня есть несколько проблем с регистрацией.Вход в Exchange с использованием MAPI
Я могу войти в систему только с использованием текущей учетной записи пользователя, но когда я пытаюсь войти в специальную учетную запись, почта все равно отправляется из текущей учетной записи пользователя. Мой Войти код следующим образом:
private bool Logon()
{
if (String.IsNullOrEmpty(username) || String.IsNullOrEmpty(password))
{
error = MAPILogon(WinHandle, null, null, 0, 0, ref session);
Logging.Log("Logged in using credentials for the current user.");
}
else
error = MAPILogon(WinHandle, username, password, 0, 0, ref session);
if (error != 0)
error = MAPILogon(WinHandle, null, null, MapiLogonUI, 0, ref session);
return error == 0;
}
[DllImport("MAPI32.DLL", CharSet = CharSet.Ansi)]
private static extern int MAPILogon(IntPtr hwnd, string profileName, string password,
int flag, int rsv, ref IntPtr session);
[DllImport("MAPI32.DLL")]
private static extern int MAPISendMail(IntPtr session, IntPtr hwnd, MapiMessage message, int flag, int rsv);
я добавил нулевой терминатор к имени пользователя и пароля («\ 0»), так что кажется, что я должен быть в состоянии войти в систему в качестве другого пользователя.
Я попытался закрыть мой Outlook и запустить приложение, и он сказал, что он отправил сообщение правильно, но замерзал при закрытии. Outlook больше не открывается, и в итоге я перезагрузил свой компьютер. Должен ли Outlook быть открытым для использования MAPI-элементов управления?
И наконец, когда сообщение отправлено, я получаю подтверждение, что «Программа пытается отправить сообщение от вашего имени». Поскольку это приложение может отправлять несколько сообщений в день, я не хочу, чтобы пользователю нужно было нажать «Разрешить». Есть ли способ подавить это сообщение программно или в качестве конфигурации Outlook или Exchange Server?
Моя среда для разработчиков - это Windows 7 и Outlook 2010, но это необходимо для работы во всех средах. Извините за то, что у вас так много вопросов; Я ценю любые идеи, которые могут иметь люди.
=== REVISED ---
Первая часть моего вопроса был дан ответ. MAPI входит в профиль. Тем не менее, мне все еще интересно, знает ли кто-нибудь, как подавить предупреждение о доступе, и получить Simple MAPI для входа в учетную запись, отличную от той, к которой пользователь вошёл в систему. Мне нужно сделать это, потому что вся электронная почта с любой станции будет отправлена из одной выделенной учетной записи.
Я был бы рад использовать расширенный MAPI, если бы мог найти более подробную информацию о том, как его использовать. Я нашел некоторую информацию и даже образец программы, но это дает мне ошибку, говоря, что «Либо нет почтового клиента по умолчанию, либо текущий почтовый клиент не может выполнить запрос обмена сообщениями». Я попытался изменить процессор, для которого построено приложение, но сообщение сохранилось. Поскольку у моего простого приложения MAPI нет этой ошибки, я знаю, что у меня есть почтовый клиент по умолчанию.
Снова благодарим за любую помощь.
Благодарим вас за ответ. Я проверяю наш системный администратор, чтобы проверить, не вступил ли я в систему. К сожалению, клиент хотел MAPI, и мой менеджер хотел .Net, поэтому у меня нет такого решения. Ссылка кажется сломанной, но я получаю представление о том месте, куда вы меня отправляете, и при необходимости размещайте дополнительные вопросы MAPI. Еще раз благодарю вас за ваш ответ. – Tim