Azure 上通过 SendGrid 发送邮件

Azure 上通过 SendGrid 发送邮件SendGrid 是架构在云端的电子邮件服务 它能提供基于事务的可靠的电子邮件传递 并且具有可扩充性和实时分析的能力 本文从 Azure 上创建 SendGrid 账号开始 介绍如何通过 SendGrid 发送邮件

SendGrid 是什么?

SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递。

并且具有可扩充性和实时分析的能力。常见的用例有:

  • 自动回复用户的邮件
  • 定期发送信息给用户
  • 生成报表等

由于使用 SendGrid 这样的第三方邮件服务既稳定可靠又不用自己维护邮件服务器,并且对于邮件发送量不大的应用,免费发送的邮件数 (每个月25000封)已经可以满足需求。所以越来越多的应用都开始使用这种邮件服务来发送邮件。

下面我们从 Azure 上创建 SendGrid 账号开始,介绍如何通过 SendGrid 发送邮件。

创建 SendGrid 账号

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

Azure 上通过 SendGrid 发送邮件

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

Azure 上通过 SendGrid 发送邮件

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

Azure 上通过 SendGrid 发送邮件

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

Azure 上通过 SendGrid 发送邮件

在使用 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,所以要指定安装的版本。

Azure 上通过 SendGrid 发送邮件

发送测试邮件

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

// 请使用前面介绍的被 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 = "

Hello World!

"; // 通过异步方法发送邮件。 transport.DeliverAsync(myMessage);

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

发送带附件的邮件

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

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

已知问题

如果你有一个非常顽固的用户,他要求你发出的邮件内容必须是纯文本的形式 (主要是为了保持手动创建的各种换行和缩进),不能是 HTML 格式的,这将会是一个不小的挑战。因为 SendGrid 默认把邮件内容包成了 HTML 格式。不过我们还是有方法满足客户的,你可以尝试在每一行文本前面添加一个半角的空格,这也是 SendGrid 官方给出的方法。

其实,还有另外一种方式可以实现类似的效果。那就是把所有的文本内容放到 html 的

元素中,代码也很简单:

message.Html = string.Format("
{0}

", System.Web.HttpUtility.HtmlEncode(message.Text));

总结

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228343.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:15
下一篇 2026年3月16日 下午7:15


相关推荐

  • Matlab中meshgrid的用法简介

    Matlab中meshgrid的用法简介meshgrid:网格1、主要使用的函数为[X,Y]=meshgrid(xgv,ygv);meshgrid函数生成的X,Y是大小相等的矩阵,xgv,ygv是两个网格矢量,xgv,ygv都是行向量。X:通过将xgv复制length(ygv)行(严格意义上是length(ygv)-1行)得到Y:首先对ygv进行转置得到ygv’,将ygv’复制(length(xgv)-1)次得到。…

    2022年6月12日
    90
  • C实现反双曲余弦函数等

    C实现反双曲余弦函数等虽然没有这样的函数 但是可以推出来 如果求 X 的反双曲正弦 则 Asinh x Log x Sqrt x x 1 对应的 C 中的数学公式 System Math Log X Math Sqrt X X 1 还有这些公式 以下为非内部数学函数的列表 这些函数皆可由内部数学函数导出 正切 Sec x 1 Cos x 余切 Csc x 1 Sin x 余切 Ctan x 1 Tan x 反正弦

    2026年3月18日
    3
  • Python 安装 【Pycharm interpreter field is empty(解释器为空)】

    Python 安装 【Pycharm interpreter field is empty(解释器为空)】原因:未安装Python引起,解决办法:直接安装Anaconda即可。Anaconda是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,装上Anaconda,就相当于把Python和一些如Numpy、Pandas、Scrip、Matplotlib等常用的库自动安装好了,使得安装比常规Python安装要容易。1.Anaconda官方下载…

    2022年8月29日
    7
  • Java集合篇:List总结

    Java集合篇:List总结

    2021年10月4日
    43
  • 李飞飞学生新作:利用场景图生成图像

    李飞飞学生新作:利用场景图生成图像艾伯特 nbsp AI nbsp 科技评论按 近日 李飞飞的学生 JustinJohnso 在 arXiv 上传了一篇论文 ImageGenerat 从场景图生成图像 提出利用结构化场景图而不是非结构化文本生成图像 该方法能够明确解析对象和对象之间关系 并可生成具有多个可识别对象的复杂图像 论文摘要为了能真正理解视觉世界 模型不仅要能够识别图像 还要能够生成它们 近

    2026年3月18日
    2
  • leetcode 接雨水2_leetcode会议室

    leetcode 接雨水2_leetcode会议室题目链接给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9 提示:n == height.length0 <= n &lt

    2022年8月8日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号