Ответ 1
Попробуйте следующее:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "mailto:[email protected]?subject=hello&body=love my body";
proc.Start();
Я хочу отправить электронное письмо из приложения .net windows forms с помощью почтового клиента по умолчанию (thunderbird, Outlook и т.д.). Я хотел бы задать тему и текст тела - я думаю, что есть способ сделать это, отправив что-то вроде этого в Windows Explorer: "mailto: [email protected]? Subject = mysubject & body = mymessage". У вас есть примеры на этом?
Попробуйте следующее:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "mailto:[email protected]?subject=hello&body=love my body";
proc.Start();
Если вы работаете только в среде MS Windows, вы можете использовать MAPI32.DLL. Управляемую оболочку можно найти здесь:
http://www.codeproject.com/KB/IP/SendFileToNET.aspx
Код выглядит следующим образом:
MAPI mapi = new MAPI();
mapi.AddAttachment("c:\\temp\\file1.txt");
mapi.AddAttachment("c:\\temp\\file2.txt");
mapi.AddRecipientTo("[email protected]");
mapi.AddRecipientTo("[email protected]");
mapi.SendMailPopup("testing", "body text");
// Or if you want try and do a direct send without displaying the mail dialog
// mapi.SendMailDirect("testing", "body text");
Правильный способ сделать это - использовать MAPI, но использование кода interop для dll MAPI фактически не поддерживается и не рекомендуется для этого.. Я сделал это и, до тех пор, пока вы очень осторожны в своем коде взаимодействия и не делаете гораздо больше взаимодействия, чем открытие почтового клиента для отправки электронной почты, вы должны быть в порядке.
Существует несколько проблем с использованием подхода "mailto", в меньшей степени из которого вы не можете прикреплять файлы.
Это то, что я пробовал:
Process.Start("mailto:[email protected]?subject=" +
HttpUtility.HtmlAttributeEncode("Application error report") +
"&body=" + HttpUtility.HtmlAttributeEncode(memoEdit1.Text));
Но если текст тела слишком велик, я получаю исключение:
Win32Exception "Область данных, переданная системному вызову, слишком мала"
Итак, вопрос все еще открыт, так как мне нужно обрабатывать длинный текст тела. Я не знаю предела размера для этой ошибки.