2010-08-13 5 views
1

Я пишу приложение C# .net, которое должно отправлять сообщения электронной почты с помощью MAPI. Для достижения этой цели я использую следующую библиотеку. http://www.codeproject.com/KB/IP/SendFileToNET.aspx Вот пример того, как я ее использую.windows live mail mapi support

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

+0

Microsoft изо всех сил пытается избавиться от MAPI. Это будет один из способов ... –

+0

Каковы альтернативы? Мне нужно отправить сообщения электронной почты из моего приложения, используя внешнюю почтовую программу. – Jargo

+0

Альтернативой является либо модель объектного объекта Outlook, если вы хотите подключать туда сообщения и использовать их в отправленных элементах, используя подписи и т. Д. Или SMTP. –

ответ

1

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

+0

Можете ли вы указать мне лучшую реализацию .net mapi. – Jargo

+0

Я не уверен, что еще там. Опять же, если он работает, за исключением возвращаемого значения, просто игнорируйте возвращаемое значение; Я не уверен, что он будет использоваться в любом случае, кроме журнала. –