C#,当我在 Windows 窗体应用程序中发送电子邮件时,图像显示为空白 [重复]

Posted

技术标签:

【中文标题】C#,当我在 Windows 窗体应用程序中发送电子邮件时,图像显示为空白 [重复]【英文标题】:C#, image appears blank when I send email in a Windows Forms Application [duplicate] 【发布时间】:2016-12-01 18:18:45 【问题描述】:

我想发送一封带有徽标的电子邮件,但收件箱中的图片为空白

代码如下:

 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);

【问题讨论】:

【参考方案1】:

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

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

应该是这样的

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

【讨论】:

【参考方案2】:

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

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

您要做的是包含图像的完整路径

【讨论】:

以上是关于C#,当我在 Windows 窗体应用程序中发送电子邮件时,图像显示为空白 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从文本框(windows窗体)检查主键是不是存在于我的数据库中,c#

当我尝试在 C# 中执行我的 Windows 窗体时,它是空白的?

如何在 C# windows 窗体中绘制可缩放图像

C# Windows 窗体无法在 Windows10 上加载非托管 C++ DLL

C# Windows 窗体 - 带有事件的不可见元素(单击和 MouseEnter/Leave)

如何将我的 VBA 宏转换为 C# 以在 Windows 窗体应用程序中使用?