sendgrid-python:用 Python 发邮件,几行代码搞定
sendgrid-python:用 Python 发邮件,几行代码搞定
最近留意到一个邮件发送的 Python 库,sendgrid-python。它在 GitHub 上有 1,628 个 Star,数量不算多,但解决的是个实在问题。
很多开发者都遇到过这种情况:项目需要发邮件,用 Python 自带的 smtplib 也能写,但配置麻烦,成功率低,进垃圾箱的概率还高。走第三方邮件服务的 API 会更稳一些,sendgrid-python 就是 SendGrid 服务的官方 Python SDK。
这个库封装了 SendGrid Web API v3 的全部端点,最常用的功能就是发邮件,也支持查询退信、处理入站邮件等。对需要集成邮件功能的 Python 项目来说,是个省事的方案。

安装很简单
直接用 pip 装:
pip install sendgrid
依赖只有两个:Python-HTTP-Client 和 Cryptography。Python 版本要求 2.7 以上。
使用时需要配置 SENDGRID_API_KEY 环境变量,在 SendGrid 后台申请一个就行。配好一次,后续不用再管。Mac 和 Windows 的环境变量配置方式文档里都写了,复制粘贴就能用。
发邮件有两种写法
这个库提供了两种使用方式,看你喜欢哪种。
第一种是用 Mail 辅助类,这是最省事的写法:
import sendgrid
import os
from sendgrid.helpers.mail import *
sg = sendgrid.SendGridAPIClient(api_key=os.environ.get('SENDGRID_API_KEY'))
from_email = Email("test@example.com")
to_email = To("test@example.com")
subject = "Sending with SendGrid is Fun"
content = Content("text/plain", "and easy to do anywhere, even with Python")
mail = Mail(from_email, to_email, subject, content)
response = sg.client.mail.send.post(request_body=mail.get())
几行代码就能发一封邮件。Mail 类会自动帮你处理 personalization 对象,不用手动拼 JSON。对大多数场景来说,这种写法够用了。
第二种是直接调 API,自己组装请求体:
sg = sendgrid.SendGridAPIClient(api_key=os.environ.get('SENDGRID_API_KEY'))
data = {
"personalizations": [
{
"to": [{"email": "test@example.com"}],
"subject": "Sending with SendGrid is Fun"
}
],
"from": {"email": "test@example.com"},
"content": [
{"type": "text/plain", "value": "and easy to do anywhere, even with Python"}
]
}
response = sg.client.mail.send.post(request_body=data)
这种方式更灵活,适合需要精细控制的场景。比如要加附件、用模板、批量发送,都可以在这种结构上做扩展。文档里还有更完整的示例,需要的时候可以查。
不止发邮件
除了发邮件,这个库还支持 SendGrid v3 的所有 API 端点。
比如查退信列表:
response = sg.client.suppression.bounces.get()
支持流式接口的写法,代码链条清晰。也支持传统的路径字符串方式:
response = sg.client._("suppression/bounces").get()
另外还带了入站邮件解析的辅助模块,可以处理通过 webhook 接收到的邮件。这个功能在需要做邮件自动回复或工单系统的场景里会用到。

什么场景适合用
如果你的项目需要发事务性邮件,比如注册验证码、密码重置、通知推送,这个库很合适。API 方式比 SMTP 稳定,送达率也更高。SendGrid 有免费额度,小项目够用了。
如果你要做复杂的邮件路由、解析,可能需要更多基础设施。但作为发送端,sendgrid-python 够用了。文档里还有常见用例的示例代码,照着改就行。
代码是 MIT 协议的,可以商用。社区也比较活跃,有问题能查到解决方案。
小结
sendgrid-python 是个务实的工具。代码简洁,文档完整,几行代码就能集成邮件发送。对于需要邮件功能的 Python 项目来说,值得试试。
题能查到解决方案。
小结
sendgrid-python 是个务实的工具。代码简洁,文档完整,几行代码就能集成邮件发送。对于需要邮件功能的 Python 项目来说,值得试试。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)