文章目录sendgrid-python用 Python 调用 SendGrid 邮件 API1、这项目是干嘛的2、安装和配置3、发一封邮件有多简单4、不止能发邮件5、适合哪些人用sendgrid-python用 Python 调用 SendGrid 邮件 APIsendgrid-python 在 GitHub 上已经拿到 1,628 Star。这是 Twilio SendGrid 官方维护的 Python SDK作用很明确让你在 Python 项目里直接调用 SendGrid Web API v3完成邮件发送、入站邮件处理以及其他 API 操作。1、这项目是干嘛的如果你需要在 Python 应用里发邮件又不想自己拼装 SMTP 请求或者处理复杂的邮件协议这个库可以省掉很多麻烦。它封装了 SendGrid v3 的全部接口核心就是围绕/mail/send端点提供的一组 Helper同时也支持直接访问其他 v3 端点。开发者可以用两种方式使用它一种是直接构造 JSON 请求体另一种是调用库内置的Mail辅助类。除了发邮件它还提供了 Inbound Parse 的辅助模块用来处理接收到的邮件。对于需要把邮件接收和解析自动化的场景这个模块能减少很多重复代码。项目的依赖很少主要包括Python-HTTP-Client和Cryptography安装过程不会拖进一堆用不上的包。2、安装和配置安装命令很简单pipinstallsendgrid环境要求不高Python 2.7 及以上版本都可以运行。如果你正在维护一个比较老的项目也不用担心兼容性问题。使用前需要设置SENDGRID_API_KEY。Mac 或 Linux 环境下可以执行echoexport SENDGRID_API_KEYYOUR_API_KEYsendgrid.envechosendgrid.env.gitignoresource./sendgrid.envWindows 下则用set或setx命令写入环境变量。项目也支持.env文件复制.env_sample后填入 key 即可。3、发一封邮件有多简单用Mail辅助类只需要几行代码importsendgridimportosfromsendgrid.helpers.mailimport*sgsendgrid.SendGridAPIClient(api_keyos.environ.get(SENDGRID_API_KEY))from_emailEmail(testexample.com)to_emailTo(testexample.com)subjectSending with SendGrid is FuncontentContent(text/plain,and easy to do anywhere, even with Python)mailMail(from_email,to_email,subject,content)responsesg.client.mail.send.post(request_bodymail.get())print(response.status_code)print(response.body)print(response.headers)如果你不想用辅助类也可以直接传 JSONimportsendgridimportos sgsendgrid.SendGridAPIClient(api_keyos.environ.get(SENDGRID_API_KEY))data{personalizations:[{to:[{email:testexample.com}],subject:Sending with SendGrid is Fun}],from:{email:testexample.com},content:[{type:text/plain,value:and easy to do anywhere, even with Python}]}responsesg.client.mail.send.post(request_bodydata)print(response.status_code)两种方式返回的结果都包含状态码、响应体和响应头便于你做后续判断。4、不止能发邮件这个 SDK 同时支持 SendGrid v3 的其他端点比如查询退信列表importsendgridimportos sgsendgrid.SendGridAPIClient(api_keyos.environ.get(SENDGRID_API_KEY))responsesg.client.suppression.bounces.get()print(response.status_code)print(response.body)print(response.headers)它提供了 Fluent 风格的调用链也支持用字符串路径直接访问 API。这意味着你既可以用sg.client.suppression.bounces.get()这种链式写法也可以用sg.client._(suppression/bounces).get()这种更直接的方式。对于习惯了 RESTful 路径的开发者来说第二种写法可能更容易对应到官方文档的接口说明。项目在持续维护中更新记录和发布信息都写在了 CHANGELOG 里。遇到问题时可以先查看自带的 TROUBLESHOOTING 文档常见问题基本都有覆盖。5、适合哪些人用需要在 Python 后端集成邮件通知的开发者正在使用 SendGrid 服务、希望减少 HTTP 请求拼装工作的团队需要处理入站邮件解析的运维或开发人员项目采用 MIT 协议有完整的文档、示例代码和故障排查指南。整体来看sendgrid-python 的定位很清晰它不是要做一个大而全的邮件框架而是把 SendGrid API 的调用成本降到最低让你几行代码就能把邮件能力接进 Python 项目。文档、示例代码和故障排查指南。整体来看sendgrid-python 的定位很清晰它不是要做一个大而全的邮件框架而是把 SendGrid API 的调用成本降到最低让你几行代码就能把邮件能力接进 Python 项目。