2012-11-29 3 views
0

Я пишу программу 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 нет этой ошибки, я знаю, что у меня есть почтовый клиент по умолчанию.

Снова благодарим за любую помощь.

ответ

0

Мне пришлось переключиться на использование расширенного MAPI и удалось решить обе эти проблемы.

Спасибо, Димитрий, за вашу помощь и на этом сайте, и на here.

1

MAPILogon принимает имя существующего профиля, а не имя пользователя. Вы пытались использовать объектную модель Outlook? Почему вы пытаетесь использовать Simple MAPI? Для всех вопросов, связанных с Outlook, вы хотите опубликовать сообщение в http://social.msdn.microsoft.com/Forums/en/outlookdev/threads

+0

Благодарим вас за ответ. Я проверяю наш системный администратор, чтобы проверить, не вступил ли я в систему. К сожалению, клиент хотел MAPI, и мой менеджер хотел .Net, поэтому у меня нет такого решения. Ссылка кажется сломанной, но я получаю представление о том месте, куда вы меня отправляете, и при необходимости размещайте дополнительные вопросы MAPI. Еще раз благодарю вас за ваш ответ. – Tim

Смежные вопросы