Dio*_*art 5 .net email sendgrid
我从SendGrid开始发送电子邮件,但我找不到如何嵌入图像的方法。在不使用SendGrid的情况下,我使用以下代码发送带有嵌入式图像的电子邮件:
var mail = new System.Net.Mail.MailMessage();
mail.Subject = "Warning";
mail.From = "from_user@test.com";
mail.To.Add("to_user@test.com");
mail.IsBodyHtml = true;
mail.Body = "<html><body><a href='http://www.mywebsite.com' title='My Website'><img src='cid:my_image' alt='My Image' border='0' /></a><br /><h1>My E-mail Title</h1>E-mail content.</body></html>";
var av = AlternateView.CreateAlternateViewFromString(mail.Body, null, "text/html");
av.LinkedResources.Add(new LinkedResource(@"C:\my_image.png", "image/png"){ContentId="my_image"});
mail.AlternateViews.Add(av);
var smtp = new SmtpClient("smtp.test.com");
smtp.Credentials = new NetworkCredential("user", "pass");
smtp.Send(mail);
Run Code Online (Sandbox Code Playgroud)
-编辑-
现在,我使用以下代码发送电子邮件(使用SendGrid类)。
var message = SendGrid.GetInstance();
message.Subject = "Warning";
message.From = new MailAddress("from_user@test.com");
message.To = new MailAddress[] { new MailAddress("to_user@test.com") };
message.Html = "<html><body><a href='http://www.mywebsite.com' title='My Website'><img src='cid:my_image' alt='My Image' border='0' /></a><br /><h1>My E-mail Title</h1>E-mail content.</body></html>";
var transportSMTP = SMTP.GetInstance(new NetworkCredential("user", "pass"));
transportSMTP.Deliver(message);
Run Code Online (Sandbox Code Playgroud)
我需要知道的是如何使用其内容ID(CID)将图像嵌入和链接到电子邮件中。
我也玩了一会儿。解决方案是先附加图像,然后在电子邮件中使用文件的直接名称嵌入。
var myMessage = new SendGridMessage();
myMessage.AddTo("to@email.com");
myMessage.From = "from@email.com";
myMessage.Subject ="Forgotten Password";
string body = @"<div><img src='cid:email_reset' alt='Email Reset Header' border='0' /></div>" +
@"<p>Content...</p>";
string att = Request.PhysicalApplicationPath + @"Content\files\images\email_reset.jpg";
var attachment = new Attachment(att, new ContentType("image/jpeg"));
var linkedResource = new LinkedResource(att, new ContentType("image/jpeg"));
myMessage.AddAttachment(attachment.ContentStream, attachment.Name);
myMessage.EmbedImage(attachment.Name, "email_reset");
myMessage.Text = WebUtility.HtmlDecode(Regex.Replace(body, "<[^>]*(>|$)", string.Empty));
myMessage.Html = body;
// Authenticate and Send the email
Run Code Online (Sandbox Code Playgroud)
我与 SendGrid 客户支持工程师交谈,他指导我来到这里。
所以你的代码将是...
var message = SendGrid.GetInstance();
message.Subject = "Warning";
message.From = new MailAddress("from_user@test.com");
message.To = new MailAddress[] { new MailAddress("to_user@test.com") };
message.Html = "<html><body><a href='http://www.mywebsite.com' title='My Website'><img src='cid:my_image' alt='My Image' border='0' /></a><br /><h1>My E-mail Title</h1>E-mail content.</body></html>";
// added
message.EmbedImage(@"C:\my_image.png","my_image");
// added
var transportSMTP = SMTP.GetInstance(new NetworkCredential("user", "pass"));
transportSMTP.Deliver(message);
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种添加 MemoryStream 对象而不是文件名的方法,但它看起来还不可用。
| 归档时间: |
|
| 查看次数: |
11089 次 |
| 最近记录: |