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