Comment créér un mail au format Mulitpart avec .Net 2.0 en c# ?

 

C'est une nouveauté de .Net 2.0 le namespace System.Net.Mail regorge de classes très interessantes , notamment la possibilité maintenant de pouvoir créér des mails au format multipart, chose assez compliquée à réaliser avec .Net 1.1, voici un exemple :

 

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add("to@zone.com");
mail.From = new System.Net.Mail.MailAddress("from@address.com");
mail.Subject = "Multipart Mail";

AlternateView plainTextView = AlternateView.CreateAlternateViewFromString("Plain text mail", new System.Net.Mime.ContentType("text/plain"));
AlternateView htmlTextView = AlternateView.CreateAlternateViewFromString("<strong>Html</strong><u>text mail</u>", new System.Net.Mime.ContentType("text/html"));
mail.AlternateViews.Add(plainTextView);
mail.AlternateViews.Add(htmlTextView);
SmtpClient smtp = new SmtpClient("127.0.0.1");
smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
smtp.PickupDirectoryLocation = System.Environment.CurrentDirectory;
smtp.Send(mail);

Une petite astuce au passage pour recuperer le contenu du mail au format .eml plutot que de l'envoyer, ça aussi est une nouveauté .Net 2.0 , la possiblité de pouvoir changer le PickupDirectory.


Voici le resultat :


 


x-sender: from@address.com
x-receiver: to@zone.com
mime-version: 1.0
from: from@address.com
to: to@zone.com
date: 13 Jan 2007 13:38:22 +0100
subject: Multipart Mail
content-type: multipart/mixed; boundary=--boundary_0_8674b748-ccae-465a-a9a4-68a543153c65

----boundary_0_8674b748-ccae-465a-a9a4-68a543153c65
content-type: multipart/alternative; boundary=--boundary_1_3cfd09ca-6544-48e2-8625-eacc09ba655b

----boundary_1_3cfd09ca-6544-48e2-8625-eacc09ba655b
content-type: text/plain
content-transfer-encoding: quoted-printable

Plain text mail
----boundary_1_3cfd09ca-6544-48e2-8625-eacc09ba655b
content-type: text/html
content-transfer-encoding: quoted-printable

<strong>Html</strong><u>text mail</u>
----boundary_1_3cfd09ca-6544-48e2-8625-eacc09ba655b--

----boundary_0_8674b748-ccae-465a-a9a4-68a543153c65--

1 commentaire:

Anonyme a dit…

Merci pour ce code
Je ne connassais pas AlternateView. Effectivement il y a plein de classes bien utiles dans .NET !!