поддержка карты windows live mail

Я пишу приложение С# .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.


person Jargo    schedule 13.08.2010    source источник
comment
Microsoft изо всех сил пытается избавиться от MAPI. Это был бы один из способов...   -  person Hans Passant    schedule 13.08.2010
comment
Какие есть альтернативы? Мне нужно отправлять сообщения электронной почты из моего приложения с помощью внешней почтовой программы.   -  person Jargo    schedule 13.08.2010
comment
Альтернативой является либо объектная модель Outlook, если вы хотите передавать через нее сообщения и использовать преимущества их нахождения в отправленных элементах, с использованием подписей и т. д., либо SMTP.   -  person Alan B    schedule 08.02.2016


Ответы (1)


Это сбивает с толку - решение .NET - это SMAPI, а не MAPI. Я не уверен, насколько надежны возвращаемые значения от SMAPI, тем более что возвращаемое значение возвращается непосредственно из реализации SMAPI поставщика MUA по умолчанию, а таких существует по крайней мере дюжина. Поскольку браузер не использует возвращаемое значение, а они являются основными клиентами SMAPI, я бы не стал на это полагаться.

person Cain T. S. Random    schedule 13.08.2010
comment
Я не уверен, что еще там есть. Опять же, если это работает, за исключением возвращаемого значения, просто игнорируйте возвращаемое значение; Я не уверен, что он будет использоваться в любом случае, кроме ведения журнала. - person Cain T. S. Random; 15.08.2010