Azure : 通过 SendGrid 发送邮件

简介:

SendGrid 是什么?

SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递。并且具有可扩充性和实时分析的能力。常见的用例有:
1. 自动回复用户的邮件
2. 定期发送信息给用户
3. 生成报表等

由于使用 SendGrid 这样的第三方邮件服务既稳定可靠,又不用自己维护邮件服务器。并且对于邮件发送量不大的应用,免费发送的邮件数 (每个月 25000 封)已经可以满足需求。所以越来越多的应用都开始使用这种邮件服务来发送邮件。
下面我们从 Azure 上创建 SendGrid 账号开始,介绍如何通过 SendGrid 发送邮件。

创建 SendGrid 账号

登录 Azure 的管理网站,点击 "+" 开始创建 SendGrid 账号。在搜索栏中输入 "SendGrid Email Delivery" 并回车:

选择 "SendGrid Email Delivery" 进入简介界面:

在简介界面中,您可以读到一些基本的信息,当然直接点击 "Create" 就可以了!此时进入创建 SendGrid 详情界面,基本信息我们就不关注了,看看 Pricing tier 中F1 free 的收费标准吧。这可是货真价实的每个月 25000 封免费邮件。最后点击 "Create" 完成创建:

SendGrid 账号创建完成后我们去看一下它的 Configurations 信息:

在使用 SendGrid 发送邮件时,需要用到这里的信息。首先您会看到用户名已经被处理过了,在访问 SendGrid 服务时,我们使用的就是这个被处理过的用户名称。还有下面的 SMTP SERVER,也就是说当我们创建了 SendGrid 账号后,还可以用传统的方式通过指定的 smtp 服务器来发送邮件。

在C# 项目中使用 SendGrid

假如我们要在一个 asp.net 的应用中通过 SendGrid 发送邮件。要使用 SendGrid 服务需要先在该项目中安装 SendGrid 提供的组件。请在 Visual Studio 的 Package Manager Console 中执行下面的命令:

> Install-Package Sendgrid -Version 6.3.4

注意,SendGrid 的API 升级很快,我们这里使用的是 V2 版本的 API,所以要指定安装的版本。

发送测试邮件

万事俱备,让我们先发送一封普通的邮件试试:

复制代码
// 请使用前面介绍的被 SendGrid 处理过的用户名。
string username = "xxxxx";
string password = "yyyyy";
var credentials = new NetworkCredential(username, password);
var transport = new Web(credentials);

var myMessage = new SendGridMessage();
myMessage.From = new MailAddress("fromaddress");
myMessage.AddTo("toaddress");
myMessage.Subject = "test";
myMessage.Html = "<p>Hello World!</p>";

// 通过异步方法发送邮件。
transport.DeliverAsync(myMessage);
复制代码

代码很简单,不需要解释。需要注意的是这段代码在您本地调试时是无法发送邮件的。您需要把您的应用发布到 Azure的 Web App 或是 Cloud Service 上才能成功的发送邮件。

发送带附件的邮件

您可以使用 SendGridMessage.AddAttachment 方法为您的邮件添加附件。这个方法有两个重载,分别是指定文件路径和文件流。因为如果您的程序运行在 Azure上,读取文件流的用例会多一些。

如果您还需要其它一些功能,请详细的阅读 SendGridMessage 类型的 API,它基本上能够满足您所有的需求。

已知问题

如果您有一个非常顽固的用户,他要求您发出的邮件内容必须是纯文本的形式 (主要是为了保持手动创建的各种换行和缩进),不能是 HTML 格式的。这会是一个不小的挑战,因为 SendGrid 默认把邮件内容包成了 HTML 格式。不过我们还是有机会满足您的客户,您可以尝试在每一行文本前面添加一个半角的空格。这是 SendGrid 官方给出的方法,也曾救过笔者一命,但愿您不会碰到这样的客户!
其实,还有另外一种方式可以实现类似的效果。那就是把所有的文本内容放到 html 的<pre>元素中。代码也很简单:

message.Html = string.Format("<pre>{0}</pre>", System.Web.HttpUtility.HtmlEncode(message.Text));

总结

本文概要的介绍了在 Azure 上的 C# 应用中,如何使用 SendGrid 发送电子邮件。虽然代码不多,但描述了整个操作过程,希望对朋友们有所帮助。


本文转自sparkdev博客园博客,原文链接:http://www.cnblogs.com/sparkdev/p/7028977.html,如需转载请自行联系原作者

相关文章
|
7月前
|
监控 安全 API
Outlook邮箱API发送邮件的具体步骤
使用Outlook邮箱API发送邮件涉及五个步骤:1) 注册Azure应用并获取API访问权限;2) 构建包含邮件详情的POST请求;3) 发送请求至API端点,附带验证信息和访问令牌;4) 检查API响应状态码确保邮件发送成功;5) 监控邮件发送状态。AokSend提供高效发信服务,支持触发式和SMTP/API接口。确保遵循最佳实践,保证邮件发送安全可靠。
|
7月前
|
安全 API 开发者
Zoho Mail邮箱API发送邮件的方法
Zoho Mail提供了强大的API,使开发者可以通过编程方式轻松地使用Zoho Mail发送邮件。aoksend将介绍如何使用Zoho Mail邮箱API发送邮件,以及一些常见的用法示例。
|
7月前
|
网络协议 数据安全/隐私保护 Windows
搭建个人hMailServer 邮件服务实现远程发送邮件
搭建个人hMailServer 邮件服务实现远程发送邮件
145 1
|
7月前
|
监控 安全 API
Office365邮箱API发送邮件有什么值得推荐的方法
使用Office365邮箱API发送邮件时,建议采用OAuth认证确保安全;利用RESTful API简化流程;借助官方客户端库加速集成;遵循最佳实践保障安全可靠;批量发送时使用异步方式提升效率;监控调试以解决问题;注意避免触发垃圾邮件过滤。AokSend提供高效发信服务,支持触发式接口和SMTP/API,独立IP确保高触达。
|
7月前
|
网络协议 数据安全/隐私保护 Windows
搭建个人hMailServer邮件服务实现远程发送邮件
搭建个人hMailServer邮件服务实现远程发送邮件
106 0
|
安全 数据安全/隐私保护 Windows
Outlook 365 添加企业Exchange邮箱(亲测)
Outlook 365 添加企业Exchange邮箱(亲测)
Outlook 365 添加企业Exchange邮箱(亲测)
(2017年)如何配置outlook的邮箱在foxmail登录,并使用pop
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396713 1、登录你的outlook邮箱 2、开启pop的功能 3、直接在foxmail软件自定义进行登录即可,进行高级配置,选择pop即可。
6867 0