【发布时间】:2013-03-23 02:34:14
【问题描述】:
我开始使用 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);
--- 已编辑 ---
现在我正在使用以下代码发送我的电子邮件(使用 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);
我需要知道的是如何使用其内容 ID (CID) 在电子邮件中嵌入和链接我的图像。
【问题讨论】:
-
您能告诉我们您现在使用的代码吗?
-
为什么不能使用相同的代码?
-
我已经添加了我现在使用的代码。要使用 sendgrid 发送电子邮件,我使用的是他们自己的类。这是一个下载链接:github.com/sendgrid/sendgrid-csharp。我可以使用默认的 .net 类通过 sendgrid 发送邮件吗?
-
是的,您可以使用默认的 .net 类发送电子邮件。只需将其配置为指向
smtp.sendgrid.net。您真正想要使用 SendGrid 库的唯一一次是,如果您广泛使用 X-SMTPAPI 标头,该库使该标头变得更容易 -
我遇到了同样的问题。使用 SendGrid api 发送电子邮件,以便我可以嵌入独特的参数并且无法弄清楚如何嵌入图像。有没有人使用 C# 包装器让它工作:github.com/sendgrid/sendgrid-csharp