C#使用SmtpClient发送带有图像内联的邮件

SmtpClient()允许您将附件添加到邮件中,但是如果您想在邮件打开时显示图像而不是附加图像呢?

我记得,可以用大约4行代码来完成此操作,但是我不记得怎么做,也无法在MSDN站点上找到它。

编辑:我没有使用网站或任何东西,甚至没有IP地址。图像位于硬盘驱动器上。发送后,它们应成为邮件的一部分。因此,我想我可能想使用标签…但是我不太确定,因为我的计算机没有广播。

回答:

经常提到的一种解决方案是将图像添加为Attachment邮件,然后使用引用在HTML邮件正文中对其进行cid:引用。

但是,如果改用LinkedResources集合,则内嵌图像仍会很好显示,但不会显示为邮件的其他附件。

,所以这就是我在这里所做的:

using (var client = new SmtpClient())

{

MailMessage newMail = new MailMessage();

newMail.To.Add(new MailAddress("you@your.address"));

newMail.Subject = "Test Subject";

newMail.IsBodyHtml = true;

var inlineLogo = new LinkedResource(Server.MapPath("~/Path/To/YourImage.png"), "image/png");

inlineLogo.ContentId = Guid.NewGuid().ToString();

string body = string.Format(@"

<p>Lorum Ipsum Blah Blah</p>

<img src=""cid:{0}"" />

<p>Lorum Ipsum Blah Blah</p>

", inlineLogo.ContentId);

var view = AlternateView.CreateAlternateViewFromString(body, null, "text/html");

view.LinkedResources.Add(inlineLogo);

newMail.AlternateViews.Add(view);

client.Send(newMail);

}

此解决方案AlternateView为您MailMessage的类型添加text/html。为了完整起见,您还应该添加AlternateView类型为text/plain,其中包含用于非HTML邮件客户端的电子邮件的纯文本版本。

以上是 C#使用SmtpClient发送带有图像内联的邮件 的全部内容, 来源链接: utcz.com/qa/400680.html

回到顶部