Maison >développement back-end >C++ >Pourquoi mon image de messagerie en ligne est-elle affichée comme un «x» rouge au lieu de l'image?

Pourquoi mon image de messagerie en ligne est-elle affichée comme un «x» rouge au lieu de l'image?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-25 01:36:10931parcourir

Why is My Inline Email Image Showing as a Red 'X' Instead of the Picture?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn