Mettre une image dans le corps de message d'un e-mail
-
lundi 19 décembre 2011 10:11
Bonjour, j'ai un petit souci pour mettre un pdf directement dans le corps du message et non plus en pièce jointe. J'ai le code qui permet de le mettre en pièce jointe, mais là on me demande de le mettre dans le corps du message pour éviter à l'utilisateur de devoir ouvrir la pièce jointe. Voici mon code actuellement :
Sub envoyer_mail_2(ByVal piece_jointe As String, ByVal destinataire As String) Dim client As New System.Net.Mail.SmtpClient Dim message As New System.Net.Mail.MailMessage 'client.Credentials = New System.Net.NetworkCredential("maxkun61@hotmail.fr", "XXXXX") client.Credentials = New Try client.Port = 25 'définition du port client.Host = "smtp.altitudetelecom.fr" 'définition du serveur smtp 'client.Host = "smtp.live.com" client.EnableSsl = False message.From = New System.Net.Mail.MailAddress("maxkun61@hotmail.fr") 'message.To.Add("maxkun61@hotmail.fr") message.To.Add(destinataire) 'serveur_fax Dim item As New System.Net.Mail.Attachment(piece_jointe) message.Attachments.Add(item) 'ajout de la pièce jointe au message message.Subject = "Vous avez reçu un fax" message.Body = "Vous reçu un fax provenant de " & ANI 'serveur_fax client.Send(message) 'envoi du mail message.Dispose() System.Threading.Thread.Sleep(5000) supprimer_fichier() Catch ex As Exception message.Dispose() supprime_erreur() End Try End Sub
Cordialement, maxkun ;)- Modifié maxkun lundi 19 décembre 2011 10:54
- Type modifié Ciprian DuduialaOwner mardi 3 janvier 2012 10:27 attente de feedback
Toutes les réponses
-
lundi 19 décembre 2011 12:05Modérateur
Bonjour maxkun,
Il ne me semble pas que ce soit directement possible d'envoyer un mail "au format pdf".
Par contre vous pouvez définir le format du mail comme html avec :
message.IsBodyHtml = True
Il faudrait éventuellement incorporer le pdf dans le fichier html.Après si c'est juste un image ça ne devrait pas poser de souci avec cette façon.
Bonne journée.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact -
lundi 19 décembre 2011 12:11Auteur de réponse
Bonjour,
Une possibilité que vous avez est que le corps de votre message soit de type HTML pour inclure dans celui ci un iframe ayant pour source votre
fichier pdf :
- Ajouter l'instruction suivante à votre code d’initialisation de votre message : message.IsBodyHtml = True
- Modifier le corp de votre message pour en faire un texe Html, voici un exemple de ce qui peut être le corp de votre message
<html> <body> <table> <tr> <td>test inclusion</td> </tr> <tr> <td> <iframe src="[Un url vers votre pdf]" width="800" height="600" align="middle"></iframe> </td> </tr> </table> <body> <html>.
Le problème avec cette solution est qu'elle vous oblige d'hebrger votre pdf sur un serveur.
Vous pouvez aussi convertir votre pdf en image et y inclure un lien vers celui ci.
Cordialement.
-
lundi 19 décembre 2011 12:11
Et bien en fait il y a 2 possibilité, soit l'image est un pdf soit un tiff, le pdf n'étant pas vraiment une image, je ne sais pas si on peut le traiter comme une image, en revanche le fichier tiff est bien une image, peut etre qu'il y a moyen de faire quelque chose avec le tiff.
Je vais essayer ce que tu as dit.
Cordialement, maxkun ;) -
lundi 19 décembre 2011 12:12Auteur de réponse
Bonjour,
Ce n'est pas possible pour moi, c'est un activex qui prend en charge la lecture dans le corp du mail. (au niveau logiciel ?)
Maintenant je connais pas suffisamment le HTML, mais je pense que la question serait plutôt comment faire pour lire un PDF a partir du HTML et dans ce cas il sera possible de l'adapté en mail, non ?
Cordialement,
Xavier TALOUR
Alias Troxsa SendMail

-
lundi 19 décembre 2011 12:22
Bonjour,
Peut-être quelque chose comme ceci :
Dim media As String = "text/html" Dim ContenuHTML As AlternateView = AlternateView.CreateAlternateViewFromString(BodyText, Nothing, Media) Dim image As New LinkedResource("X:\image.gif") . . . image.ContentId = "image" ContenuHTML.LinkedResources.Add(image) message.AlternateViews.Add(ContenuHTML) . . .
neojudgment.
ZGuideTV.NET project Admin/Dev : http://zguidetv.codeplex.com/ -
lundi 19 décembre 2011 12:27Et bien mon souci c'est qu'avant, les utilisateurs n'avaient pas besoin d'ouvrir la pièce jointe pour voir le fichier, en fait il voyait l'aperçu du fichier en ouvrant simplement le mail. Maintenant, il faut ouvrir la pièce jointe pour voir le fichier, et ça la que ça va pas, il faut que le fichier soit en aperçu dans le mail, donc en gros il faut que je joigne le fichier au corps du message et non en tan que pièce jointe. Je vais essayer la façon html et je vous tiens au courant.
Cordialement, maxkun ;) -
lundi 19 décembre 2011 13:44Alors j'ai essayé la méthode html en mettant du code html dans le corps du message, mais en fait le message est vide, rien n'apparait. Je pense que le code html est bien pris en compte car on ne voit pas ce que j'ai écrit dans le corps du message (qui est en fait du code html).
Cordialement, maxkun ;) -
lundi 19 décembre 2011 14:28Modérateur
@maxkun,
Je pense que le standard est bien le mail au format html. Cela dit, mettre un fichier .tif dans un fichier html semble être assez problématique suivant les navigateurs.
Le mieux serait donc de convertir l'image tif en jpg ou png et de l'incorporer dans le html.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact- Modifié Michel KModerator lundi 19 décembre 2011 14:28
-
lundi 19 décembre 2011 14:39
Le problème c'est que mon programme tournera tout seul et les fichiers qu'il devra traiter seront soient en pdf soit en tiff, les convertir je sais pas si c'est la meilleure solution. Et c'est pas possible de s'arranger pour avoir un aperçu de la pièce jointe dans le corps du message? Car mettre une pièce jointe je sais faire, peut etre qu'il y a moyen de faire comme ça...
Cordialement, maxkun ;) -
mardi 20 décembre 2011 17:21Modérateur
A priori c'est une fonction du client de messagerie. Techniquement parlant soi le client de messagerie est capable de faire un rendu du fichier sous forme d'aperçu, soit on a une image dans le fichier qui tient ce rôle...
Pas sûr du contexte mais si c'est un fichier de plusieurs pages (fax ?) je ne vois pas l'intérêt d'un aperçu. A ce compte autant mettre le fichier en pièce jointe et l'utilisateur DOIT l'ouvrir pour le consulter...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered". -
mercredi 21 décembre 2011 07:19
Justement le problème est la, l'utilisateur doit l'ouvrir. A la base c'était comme ça, mais j'ai eu des retours disant que ce n'était pas pratique de devoir l'ourvrir à achaque fois...
Enfin sur ce j'ai trouvé une solution, j'affiche un aperçu, de la pièce jointe directement. Pour cela j'utilise l'attribut cid de la balise img en html. Donc j'ai fais des tests sur mon pc pour voir si cela fonctionnait et cela fonctionne. Mais je le suis aperçu que cela ne fonctionnait pas sur les postes des employés... Et pour cause, nous n'avons pas la même version d'outlook, moi j'ai la 2010 et eux ont une version plus vieille (2003 ou 2007).
Savez vous comment je dois paramétrer leur outlook pour que l'aperçu fonctionne? Sachant que mon corps de message est du code html. Voici ma fonction envoyer un mail :
Sub envoyer_mail_2(ByVal piece_jointe As String, ByVal destinataire As String) Dim client As New System.Net.Mail.SmtpClient Dim message As New System.Net.Mail.MailMessage client.Credentials = New System.Net.NetworkCredential("maxkun61@hotmail.fr", "XXXX") 'serveur_fax Try client.Port = 25 'définition du port client.Host = "smtp.altitudetelecom.fr" 'définition du serveur smtp client.EnableSsl = False message.From = New System.Net.Mail.MailAddress("maxkun61@hotmail.fr") message.IsBodyHtml = True message.To.Add(destinataire) 'serveur_fax Dim item As New System.Net.Mail.Attachment(piece_jointe) message.Attachments.Add(item) 'ajout de la pièce jointe au message message.Subject = "Vous avez reçu un fax" message.Body = "<html> <head> <body> <img src='cid:" & ListBox1.Items(0) & "' width=" & Chr(34) & "768" & Chr(34) & " height=" & Chr(34) & "1024" & Chr(34) & " align=" & Chr(34) & "middle" & Chr(34) & "> </img> </body> </head> </html>" message.Attachments.Add(item) client.Send(message) 'envoi du mail message.Dispose() System.Threading.Thread.Sleep(5000) supprimer_fichier() Catch ex As Exception message.Dispose() supprime_erreur() End Try End Sub
Cordialement, maxkun ;)- Modifié maxkun mercredi 21 décembre 2011 07:20
-
mercredi 21 décembre 2011 10:59Modérateur
Essayez peut-être de mettre "inline" pour la propriété ContentDisposition de la pièce jointe. Cela demande au client de messagerie de présenter la pièce jointe "en ligne" dans le corps du message plutôt que sous forme d'une pièce jointe. A voir si cela marche et si c'est pratique pour les fichiers PDF.
Ou alors as t'on sous la main un fichier qui utiliserait le principe voulu ou est-il possible de le créer manuellement avec Outlook ? Dans ce cas, cela permettrait de voir comment il est fait pour pouvoir reproduire son principe.
Sinon peut-être une balise "object" mais on reste assez limité sans doute dans un mail et personnellement je trouve cela moins paratique de maniper si c'est possible au sein du fichier plutôt que de cliquer sur la pièce jointe pour qu'elle s'ouvre dans le lecteur habituel...
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered". -
mercredi 21 décembre 2011 11:18
Je suis d'accord, c'est plus simple d'ouvrir le fichier directement mais la je n'ai pas le choix j'ai eu trop de retour négatif à cause de ce petit détail. Pour l'instant, j'utilise cette méthode avec les fichier tiff et non pdf, je vais essayer ce que tu m'as dit et je te tiens au courant :)
Par contre, j'ai oublié de préciser que mon application fonctionne sur un serveur, et que pour avoir l'aperçu de l'image, je suis obligé d'afficher l'aperçu de la pièce jointe dans le message. J'ai essayé avec des balises img et iframe mais la source n'étant pas joingnable de tous les postes, j'ai du m'arrangé pour que la pièce jointe soit afficher en aperçu. Ça corse les choses mais pas le choix je suis obligé de faire avec.
Je ne sais pas si tes propositions prennent en compte ce facteur la.
Cordialement, maxkun ;)- Modifié maxkun mercredi 21 décembre 2011 11:55

