Lösen Sie das Problem, dass das Inline-Bild im E-Mail-Text als rotes „X“ angezeigt wird
Das Einbetten von Bildern in den E-Mail-Text statt als Anhänge kann die visuelle Wirkung und das Benutzerinteresse der E-Mail erheblich verbessern. Es ist jedoch frustrierend zu sehen, dass Inline-Bilder als rotes „X“ anstelle des beabsichtigten Inhalts angezeigt werden.
Problembeschreibung
Der von bereitgestellte Code versucht, mit LinkedResource
ein Inline-Bild einzufügen, aber das Ergebnis zeigt, dass es sich bei dem Bild um einen Anhang handelt und der Inline-Teil fehlt oder als rotes Kreuz angezeigt wird.
Lösung
Eine effektive Möglichkeit, ein Bild in den Text einer E-Mail einzubetten, ist die Verwendung der Klassen AlternateView
und LinkedResource
, wie im aktualisierten Code unten gezeigt:
<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>
Mit dieser Methode lädt der E-Mail-Client automatisch das Inline-Bild und zeigt es im Textkörper der E-Mail an, wodurch das Problem mit dem roten „X“ gelöst wird.
Das obige ist der detaillierte Inhalt vonWarum wird mein Inline -E -Mail -Bild als rotes 'x' anstelle des Bildes angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!