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和文本
基础教程推荐
- SonarQube C# 分析失败“不是指针的有效行偏移" 2022-01-01
- 重新排序 WPF TabControl 中的选项卡 2022-01-01
- 将数据集转换为列表 2022-01-01
- 从 C# 控制相机设备 2022-01-01
- 在 VB6 或经典 ASP 中使用 .NET 2022-01-01
- 更新 Visual Studio 中的 DataSet 结构以匹配新的 SQL 数据库结构 2022-01-01
- Mono https webrequest 失败并显示“身份验证或解密失败" 2022-01-01
- C# 9 新特性——record的相关总结 2023-04-03
- 获取C#保存对话框的文件路径 2022-01-01
- 如果条件可以为空 2022-01-01
