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和文本
基础教程推荐
- MS Visual Studio .NET 的替代品 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- rabbitmq 的 REST API 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01