Подтвердить что ты не робот

Как отправить электронное письмо по умолчанию?

Я хочу отправить электронное письмо из приложения .net windows forms с помощью почтового клиента по умолчанию (thunderbird, Outlook и т.д.). Я хотел бы задать тему и текст тела - я думаю, что есть способ сделать это, отправив что-то вроде этого в Windows Explorer: "mailto: [email protected]? Subject = mysubject & body = mymessage". У вас есть примеры на этом?

4b9b3361

Ответ 1

Попробуйте следующее:

    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo.FileName = "mailto:[email protected]?subject=hello&body=love my body";
    proc.Start();

Ответ 2

Если вы работаете только в среде 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");

Ответ 3

Правильный способ сделать это - использовать MAPI, но использование кода interop для dll MAPI фактически не поддерживается и не рекомендуется для этого.. Я сделал это и, до тех пор, пока вы очень осторожны в своем коде взаимодействия и не делаете гораздо больше взаимодействия, чем открытие почтового клиента для отправки электронной почты, вы должны быть в порядке.

Существует несколько проблем с использованием подхода "mailto", в меньшей степени из которого вы не можете прикреплять файлы.

Ответ 4

Это то, что я пробовал:

Process.Start("mailto:[email protected]?subject=" +
    HttpUtility.HtmlAttributeEncode("Application error report") + 
    "&body=" + HttpUtility.HtmlAttributeEncode(memoEdit1.Text));

Но если текст тела слишком велик, я получаю исключение:

Win32Exception "Область данных, переданная системному вызову, слишком мала"

Итак, вопрос все еще открыт, так как мне нужно обрабатывать длинный текст тела. Я не знаю предела размера для этой ошибки.