Come inviare e-mail utilizzando il client e-mail predefinito?

Voglio inviare un messaggio di posta elettronica da un’applicazione di Windows Media Form utilizzando il client di posta elettronica predefinito del sistema (thunderbird, Outlook, ecc.). Mi piacerebbe preimpostare l’object e il testo del corpo – Penso che ci sia un modo per farlo inviando qualcosa come questo a Windows Explorer: “mailto: [email protected]? Subject = mysubject & body = mymessage”. Hai qualche esempio su questo?

Prova questo:

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

Il modo corretto per farlo è utilizzando MAPI, ma l’utilizzo del codice di interoperabilità per la DLL MAPI non è in realtà un modo supportato o consigliato per farlo . L’ho fatto e, se fai molta attenzione al tuo codice di interoperabilità e non interagisci molto di più che aprire il client di posta per inviare un’email, dovresti essere OK.

Ci sono diversi problemi nell’usare l’approccio “mailto”, la meno importante è che non è ansible albind file.

Se si sta lavorando in un ambiente MS Windows solo allora è ansible utilizzare MAPI32.DLL. Un wrapper gestito può essere trovato qui:

http://www.codeproject.com/KB/IP/SendFileToNET.aspx

Il codice si presenta così:

 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"); 

Questo è quello che ho provato:

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

Ma se il corpo del testo è troppo big ottengo l’eccezione:

Win32Exception “L’area dati trasmessa a una chiamata di sistema è troppo piccola”

Quindi la domanda è ancora aperta poiché ho bisogno di gestire un testo lungo corpo. Non conosco il limite di dimensioni per questo errore.