[Résolu] Joindre une image à un mail avec C#

Joindre une image à un mail avec C# [Résolu] - C#/.NET managed - Programmation

Marsh Posté le 26-05-2009 à 12:36:01    

Bonjour :)
j'ai créé une petite appli web très light pour tester l'envoie de mail via une page asp.net.
le code behind est codé en c#.
 
L'application est en fait un bête formulaire web qui demande nom, prénom, message, destinataire du message, etc et qui envoie un mail personnalisé en HTML au destinataire.
 
L'envoi fonctionne très bien, la personnalisation aussi.
 
J'ai ensuite cherché à insérer une image dans le mail (typiquement un logo). J'ai un peu galéré, mais après avoir passé quelques heures sur le code je joins mon image comme ceci :

Code :
  1. Bitmap myLogo = new Bitmap(Resources.email_resources.logo);
  2. if (!File.Exists(Server.MapPath("logo.png" ))) myLogo.Save(Server.MapPath("logo.png" ));


Comme on peut le constater mon logo se trouve dans un fichier de resources. Si je cherche à joindre le fichier dans l'email :

Code :
  1. Attachment myLogoAttachment = new Attachment(Server.MapPath("logo.png" ));
  2. email.Attachments.Add(myLogoAttachment);


Ça, ça fonctionne nickel :)
Seulement, une image est créée en dur sur le disque du côté serveur, et ça ça me plait moyen moyen...Pour l'instant ça va c'est une appli bidon, mais si je crée un formulaire qui est destiné à être rempli plusieurs fois par jour ça devient la misère. J'ai donc vu qu'on pouvait utiliser un MemoryStream. Je m'y suis donc pris ainsi :

Code :
  1. Bitmap myLogo = new Bitmap(Resources.email_resources.logo);
  2. MemoryStream myLogoStream = new MemoryStream();
  3. myLogo.Save(myLogoStream, ImageFormat.Png);
  4. Attachment myLogoAttachement2 = new Attachment(myLogoStream, "image/png" );
  5. email.Attachments.Add(myLogoAttachment2);


 
Mais là, lorsque je reçois le mail, la pièce jointe pèse 0ko  :(
J'ai essayé pas mal de syntaxes, sans succès...J'ai été regarder la définition de cette classe "Attachment" mais pour autant que je sache je ne vois pas ce que je fais de mal :o Les exemples sur le net, d'après lesquels je me suis inspiré, ne m'aide pas non plus à résoudre mon cas ><
 
Quelqu'un aurait une petite idée ?
 
Merci d'avance !


Message édité par benhetfield le 26-05-2009 à 14:16:53

---------------
You take dollars ? You take dollars ? You take ?
Reply

Marsh Posté le 26-05-2009 à 12:36:01   

Reply

Marsh Posté le 26-05-2009 à 13:12:19    

voila comment je joins une image en attachment d'un mail en C#.  
ça marche très bien.
 
Attachment data = new Attachment(new MemoryStream(TON_BYTE_ARRY), MediaTypeNames.Application.Octet);
mail.Attachments.Add(data);


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Marsh Posté le 26-05-2009 à 14:15:44    

moi23372 a écrit :

voila comment je joins une image en attachment d'un mail en C#.  
ça marche très bien.
 
Attachment data = new Attachment(new MemoryStream(TON_BYTE_ARRY), MediaTypeNames.Application.Octet);
mail.Attachments.Add(data);


 
Nickel merci ça fonctionne :)
je me demande bien pourquoi le MemoryStream déjà instancié ne fonctionne pas ceci...Une subtilité c# je suppose :o d'autant que quand je récupère myLogoStream.Length, j'ai bien la taille de l'image...
 
Enfin bref de toutes façons merci pour la solution ! En plus rapide :p


---------------
You take dollars ? You take dollars ? You take ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed