我正在遍历Sendgrid的intro material for Python,但是执行示例代码会引发403-Forbidden错误。
我采取的步骤:
sendgrid.env
文件。conda create -n sendgrid python=3.5
(sendgrid) pip install sendgrid
(sendgrid) python main.py
main.py
包含从上面链接的示例页面复制的确切代码。
问题:运行main.py
会引发错误HTTP Error 403: Forbidden
。
我尝试过的事情:
关于我在做什么错的任何想法?
答案 0 :(得分:0)
赋予API Key完整访问权限,请按照以下步骤操作:
将您的域列入白名单,请按照以下步骤操作:
注意:添加记录时,请确保主机中没有域名。裁剪出来。
如果您不想对域进行身份验证,也可以尝试使用单方发件人验证。
注意:记录可能需要一些时间才能开始起作用。
如果您使用的是pylinter,e.message
会说
Instance of 'Exception' has no 'message' member
这是因为message
属性是由sendgrid
动态生成的,由于运行时之前pylinter不存在,因此pylinter无法访问。
因此,为防止这种情况,在文件顶部或print(e.message)
行上方,您需要添加以下任意一项,它们含义相同-
# pylint: disable=no-member
E1101是no-member
的代码,可以罚款here
# pylint: disable=E1101
现在下面的代码应该可以为您工作了。只需确保在环境中设置了SENDGRID_API_KEY
。如果不是,您也可以直接将其替换为os.environ.get("SENDGRID_API_KEY")
,但这不是一个好习惯。
# pylint: disable=E1101
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
message = Mail(
from_email="from_email@your-whitelisted-domain.com",
to_emails=("recipient1@example.com", "recipient2@example.com"),
subject="Sending with Twilio SendGrid is Fun",
html_content="<strong>and easy to do anywhere, even with Python</strong>")
try:
sg = SendGridAPIClient(os.environ.get("SENDGRID_API_KEY"))
response = sg.send(message)
print(response.status_code)
print(response.body)
print(response.headers)
except Exception as e:
print(e.message)