Résoudre le problème de l'image en ligne dans le corps de l'e-mail affichée sous la forme d'un « X » rouge
L'intégration d'images dans le corps de l'e-mail plutôt que sous forme de pièces jointes peut améliorer considérablement l'impact visuel et l'engagement des utilisateurs de l'e-mail. Cependant, il est frustrant de voir les images en ligne apparaître sous la forme d'un « X » rouge au lieu du contenu prévu.
Description du problème
Le code fourni par tente d'utiliser LinkedResource
pour insérer une image en ligne, mais le résultat montre que l'image est une pièce jointe et que la partie en ligne est manquante ou affichée sous la forme d'une croix rouge.
Solution
Un moyen efficace d'intégrer une image dans le corps d'un e-mail consiste à utiliser les classes AlternateView
et LinkedResource
, comme indiqué dans le code mis à jour ci-dessous :
<code class="language-csharp">MailMessage mailWithImg = GetMailWithImg(); MySMTPClient.Send(mailWithImg); //* 请先设置好您的SMTPClient! private MailMessage GetMailWithImg() { MailMessage mail = new MailMessage(); mail.IsBodyHtml = true; mail.AlternateViews.Add(GetEmbeddedImage("c:/image.png")); mail.From = new MailAddress("yourAddress@yourDomain"); mail.To.Add("recipient@hisDomain"); mail.Subject = "yourSubject"; return mail; } private AlternateView GetEmbeddedImage(String filePath) { LinkedResource res = new LinkedResource(filePath); res.ContentId = Guid.NewGuid().ToString(); string htmlBody = $@""<img src='cid:{res.ContentId}'/>""; AlternateView alternateView = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html); alternateView.LinkedResources.Add(res); return alternateView; }</code>
Avec cette méthode, le client de messagerie chargera automatiquement l'image en ligne et l'affichera dans le corps du courrier, résolvant ainsi le problème du « X » rouge.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!