How to convert EmailMessage alternate views into SendGrid Html and Text(如何将EmailMessage备用视图转换为SendGrid HTML和文本)
问题描述
我有一个发送邮件的接口
public interface IMailSender
{
void SendMail(MailMessage message);
}
创建邮件时,我使用AlternateView(纯文本和html)
现在我想创建一个SendGridMailSender类来实现该接口,但我的问题是我不知道如何根据MailMessage填充SendGrid.Html和SendGrid.Text。我能找到的唯一解决方案是使用StreamReader并按索引访问AlternateViewsCollection,我想还有一个更好的解决方案我想不出来。
public void SendMail(MailMessage message)
{
var sendGridMessage = CreateSendGridMessage(message);
// Create network credentials to access your SendGrid account.
var user = "userCredential";
var pswd = "userPaswd";
var credentials = new NetworkCredential(user, pswd);
// Create an SMTP transport for sending email.
var transportSMTP = SMTP.GetInstance(credentials);
// Send the email.
transportSMTP.Deliver(sendGridMessage);
}
private SendGrid CreateSendGridMessage(MailMessage mail)
{
var sendGridMessage = SendGrid.GetInstance();
sendGridMessage.From = mail.From;
var recipients = mail.To;
foreach (var recipient in recipients)
{
sendGridMessage.AddTo(recipient.ToString());
}
var stream = mail.AlternateViews[0].ContentStream;
using (var reader = new StreamReader(stream))
{
sendGridMessage.Text = reader.ReadToEnd();
}
stream = mail.AlternateViews[1].ContentStream;
using (var reader = new StreamReader(stream))
{
sendGridMessage.Html = reader.ReadToEnd();
}
return sendGridMessage;
}
谢谢
推荐答案
访问AlternateView内容的唯一方法是通过流,因此您的解决方案是正确的,尽管您还应该检查ContentType以确保mail.AlternateViews[0]
实际上是您的文本部分,依此类推。
这篇关于如何将EmailMessage备用视图转换为SendGrid HTML和文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何将EmailMessage备用视图转换为SendGrid HTML和文本


- 输入按键事件处理程序 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01