簡體   English   中英

如何使用默認電子郵件客戶端發送郵件?

[英]How to send email using default email client?

我想使用系統的默認電子郵件客戶端(thunderbird,outlook等)從.net Windows窗體應用程序發送電子郵件。 我想預設主題和正文 - 我認為有一種方法可以通過向Windows資源管理器發送這樣的內容來實現:“mailto:test@example.invalid?subject = mysubject&body = mymessage”。 你有這方面的例子嗎?

嘗試這個:

    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo.FileName = "mailto:someone@somewhere.com?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("person1@somewhere.com");
mapi.AddRecipientTo("person2@somewhere.com");
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代碼到MAPI dll 實際上不是支持或建議的方法來執行此操作 我已經這樣做了,只要你對你的互操作代碼非常小心,並且沒有比打開郵件客戶端發送電子郵件做更多的交互,你應該沒問題

使用“mailto”方法有幾個問題,其中最不重要的是你無法附加文件。

這是我試過的:

Process.Start("mailto:demo@example.invalid?subject=" +
    HttpUtility.HtmlAttributeEncode("Application error report") + 
    "&body=" + HttpUtility.HtmlAttributeEncode(memoEdit1.Text));

但如果正文文本太大,我會得到異常:

Win32Exception“傳遞給系統調用的數據區域太小”

所以問題仍然存在,因為我需要處理長正文。 我不知道這個錯誤的大小限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM