【发布时间】:2016-06-30 18:01:44
【问题描述】:
我正在向注册的用户发送确认电子邮件,并希望确保同时存在 HTML 和纯文本版本,以防用户的电子邮件客户端不显示 HTML,但我有点困惑如何去做这个。这是我的一些代码:
private async Task configSendGridasync(IdentityMessage message)
{
var myMessage = new SendGridMessage();
myMessage.AddTo(message.Destination);
myMessage.From = new System.Net.Mail.MailAddress(
"hello@example.com", "Example");
myMessage.Subject = message.Subject;
myMessage.Text = message.Body;
myMessage.Html = message.Body;
var credentials = new NetworkCredential(
ConfigurationManager.AppSettings["MailAccount"],
ConfigurationManager.AppSettings["MailPassword"]
);
// Create a Web transport for sending email.
var transportWeb = new Web(credentials);
// Send the email.
if (transportWeb != null)
{
await transportWeb.DeliverAsync(myMessage);
}
else
{
Trace.TraceError("Failed to create Web transport.");
await Task.FromResult(0);
}
}
private async Task<string> SendEmailConfirmationTokenAsync(string userID, string subject)
{
string code = await UserManager.GenerateEmailConfirmationTokenAsync(userID);
var callbackUrl = Url.Action("ConfirmEmail", "Account",
new { userId = userID, code = code }, protocol: Request.Url.Scheme);
await UserManager.SendEmailAsync(userID, subject, "<p>Example confirmation message</p>");
return callbackUrl;
}
我的代码可以运行并发送 HTML 电子邮件,但是对于拥有不显示 HTML 的电子邮件客户端的用户会发生什么? myMessage.Text = message.Body; 是否会自动获取 "<p>Example confirmation message</p>" 并将其转换为纯文本?如果没有,如何添加用于文本版本的消息?
编辑:我将使用的 HTML 格式通常类似于:
<p style="color:#333;">First paragraph</p>
<p style="color:#333;">Second paragraph <a href="https://www.somelink.com">Click here</a></p>
<p style="color:#333;"> Third <br> paragraph</p>
【问题讨论】:
-
不,它不会自动转换它。您应该提供纯文本。
标签: c# asp.net-mvc sendgrid