C#,当我在 Windows 表单应用程序中发送电子邮件时图像显示为空白

C#, image appears blank when I send email in a Windows Forms Application

我想发送带有徽标的电子邮件,但收件箱中的图像是空白的

代码如下:

 MailMessage msg = new MailMessage();
 msg.From = new MailAddress(txtEmail.Text);

 StringBuilder message = new StringBuilder();
 message.AppendLine("<img src=@'images/logo.png' />");
 message.AppendLine("<p>" + txtBody.Text + "</p>");

 msg.Body = message.ToString();
 msg.To.Add(txtTo.Text);
 msg.IsBodyHtml = true;

 SmtpClient client = new SmtpClient();

 client.UseDefaultCredentials = false;
 client.Credentials = new NetworkCredential(txtEmail.Text, txtPassword.Text);
 client.Host = "Smtp.gmail.com";
 client.Port = 587;
 client.EnableSsl = true;
 client.Send(msg);

问题出在下面这行,您在其中提供了无法正常工作的图像的相对路径。您需要为图片提供绝对路径,否则您的电子邮件客户端将无法下载图片,因为它不知道从哪里下载。

message.AppendLine("<img src=@'images/logo.png' />");

应该是这样的

message.AppendLine("<img src='www.somesitename.com/storage/logo.ong' />");

您正在使用 html 图片标签插入图片,并且您指定了它的路径。这意味着当用户打开邮件时,浏览器将尝试使用给定的相对路径查找该图像。

假设您使用 gmail 打开它,它将尝试在 gmail.com/images/logo.png 下寻找图像。它要么会找到 gmail 的徽标,要么找不到 404

你要做的是包含图片的完整路径