Я пишу приложение С# .net, которому необходимо отправлять сообщения электронной почты с использованием MAPI. Я использую следующую библиотеку для достижения этого http://www.codeproject.com/KB/IP/SendFileToNET.aspx Вот пример того, как я его использую.
MAPI mapi = new MAPI();
mapi.AddRecipientTo("[email protected]");
int returncode = mapi.SendMailPopup("subject", "message");
if(returncode==0)
{
MessageBox.Show("User sent message");
}
else if (returncode==1)
{
MessageBox.Show("User abort");
}
Этот фрагмент кода открывает диалоговое окно нового сообщения в почтовой программе по умолчанию и должен отображаться, если пользователь решил отправить или прервать отправку электронной почты.
Этот код отлично работает при использовании Outlook, что означает, что он открывает новое диалоговое окно электронной почты и возвращает правильный код ошибки, если пользователь, например, решает не отправлять сообщение, закрыв диалоговое окно сообщения.
Проблема в том, что при использовании почты Windows это работает некорректно. Диалоговое окно отправки почты открывается правильно, и приложение приостанавливает свое выполнение на mapi.SendMailPopup, пока диалоговое окно почты не будет закрыто. Однако независимо от того, что делает пользователь, mapi.SendMailPopup всегда возвращает ноль. Если пользователь, например, решит закрыть диалоговое окно сообщения без отправки сообщения, mapi.SendMailPopup возвращает 0, тогда как правильным ответом будет 1 (отмена пользователя).
Мой вопрос заключается в том, должна ли почта Windows Live требовать поддержки MAPI для этого, и если нет, может ли кто-нибудь сказать мне какой-нибудь другой бесплатный почтовый клиент Windows, который предлагал бы необходимую поддержку MAPI.