Kdg*_*Dev 38 c# inline smtpclient
SmtpClient()允许您在邮件中添加附件,但是如果您想在邮件打开时显示图像而不是附加它,该怎么办?
我记得,它可以使用大约4行代码完成,但我不记得我在MSDN网站上找不到它.
编辑:我没有使用网站或任何东西,甚至没有IP地址.图像位于硬盘上.发送时,它们应该是邮件的一部分.所以,我想我可能想要使用标签......但我不太确定,因为我的电脑没有广播.
Jam*_*ack 80
经常提到的一个解决方案是将图像添加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);
}
Run Code Online (Sandbox Code Playgroud)
注意:此解决方案会AlternateView为您MailMessage的类型添加一个text/html.为了完整起见,您还应添加一种AlternateView类型text/plain,其中包含非HTML邮件客户端的纯文本版本的电子邮件.
Laz*_*rus 13
HTML电子邮件和图像是附件,因此它只是通过内容ID引用图像的情况,即
Dim A As System.Net.Mail.Attachment = New System.Net.Mail.Attachment(txtImagePath.Text)
Dim RGen As Random = New Random()
A.ContentId = RGen.Next(100000, 9999999).ToString()
EM.Body = "<img src='cid:" + A.ContentId +"'>"
Run Code Online (Sandbox Code Playgroud)
这里似乎有全面的示例:使用内嵌图像发送电子邮件
Bra*_*don 12
当你说4行代码时,你指的是这个吗?
System.Net.Mail.Attachment inline = new System.Net.Mail.Attachment(@"imagepath\filename.png");
inline.ContentDisposition.Inline = true;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57693 次 |
| 最近记录: |