Problème lors de l'envoi d'une image par e-mail en tant qu'image intégrée dans le corps. Le fichier image s'affiche sous forme de pièce jointe, ce qui est correct, mais la partie d'image en ligne s'affiche simplement sous la forme d'un x rouge.
Voici ce que j'ai jusqu'ici
LinkedResource inline = new LinkedResource(filePath);
inline.ContentId = Guid.NewGuid().ToString();
MailMessage mail = new MailMessage();
Attachment att = new Attachment(filePath);
att.ContentDisposition.Inline = true;
mail.From = from_email;
mail.To.Add(data.email);
mail.Subject = "Client: " + data.client_id + " Has Sent You A Screenshot";
mail.Body = String.Format(
"<h3>Client: " + data.client_id + " Has Sent You A Screenshot</h3>" +
@"<img src=""cid:{0}"" />", inline.ContentId);
mail.IsBodyHtml = true;
mail.Attachments.Add(att);
inline.ContentId
, alors qu'il devrait l'êtreatt.ContentId
.inline
n'est pas du tout nécessaire. Je préfère votre question à toutes les réponses, car vous n'avez vraiment pas besoin d'utiliser un fichierAlternateView
.Réponses:
Essaye ça
la source
Un code C # minimal pour incorporer une image peut être:
la source
LinkedResource
pour le faire fonctionner dans le client Web de Hotmail / Outlook.com. FWIW, j'ai essayé ceci ainsi que @Microsoft DN et cela fonctionnait mieux.NewGuid()
, laAttachmentBase
classe (quiLinkedResource
hérite de) le crée déjà si besoin.la source
En plus des commentaires ci-dessus, j'ai les commentaires supplémentaires suivants:
"cid:att-001"
cela ne fonctionne PAS sur iPhone (niveau de correctif de fin 2016), utilisez plutôt un alphanumérique pur."cid:att-001" -> "cid:att001"
En aparté. Le rendu Outlook (même Office 2015) (toujours la majorité claire pour les utilisateurs commerciaux) nécessite l'utilisation du HTML de style TABLE TR TD car il ne prend pas entièrement en charge le modèle de boîte HTML.
la source
Un exemple encore plus minimaliste:
la source
Essaye ça.
la source
Vous devez ajouter le LinkedResource dans un AlternateView
la source
la source
L'autre solution consiste à attacher l'image en tant que pièce jointe, puis à la référencer du code html à l'aide de cid. Code HTML:
Code C #:
la source
la source
Nous avons tous nos styles de codage préférés. C'est ce que j'ai fait:
la source
J'ai ajouté le code complet ci-dessous pour afficher les images dans Gmail, Thunderbird et d'autres clients de messagerie:
la source