在Heroku上使用Python和Sendgrid

ipakzgxi  于 2022-11-13  发布在  Python
关注(0)|答案(1)|浏览(146)

我尝试使用Sendgrid发送Heroku上的电子邮件,但我得到了我以前没有看到过的输出。我看过文档,它说助手库支持3. 8之前的几个python版本,但我的版本是3. 9。是不是这导致了我得到这个错误?

以下是我的代码:

import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

message = Mail(
    from_email='hesheitaliabu@gmail.com',
    to_emails='hesheitaliabu@gmail.com',
    subject='Sending with Twilio SendGrid is Fun',
    html_content='<strong>and easy to do anywhere, even with Python</strong>')
try:
    sg = SendGridAPIClient('SG.API_KEY')
    response = sg.send(message)
    # print(response.status_code)
    print(response.body)
    print(response.headers)
except Exception as e:
    print(e.message)

出现错误:

b''
Server: nginx
Date: Mon, 05 Sep 2022 03:53:19 GMT
Content-Length: 0
Connection: close
X-Message-Id: Y19VjElqRe2byQxJrkJUeg
Access-Control-Allow-Origin: https://sendgrid.api-docs.io
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Authorization, Content-Type, On-behalf-of, x-sg-elas-acl
Access-Control-Max-Age: 600
X-No-CORS-Reason: https://sendgrid.com/docs/Classroom/Basics/API/cors.html
Strict-Transport-Security: max-age=600; includeSubDomains
vi4fp9gy

vi4fp9gy1#

正如我们在评论中所指出的,电子邮件实际上是成功发送的。您所看到的记录的消息是来自API的响应头,因为这些行:

sg = SendGridAPIClient('SG.API_KEY')
    response = sg.send(message)
    print(response.body)
    print(response.headers)

在这种情况下,消息被发送,然后程序打印出响应正文(对于成功发送的消息,正文为空),然后打印出响应标头(您现在看到的)。这不是错误。
相反,我们发现您的电子邮件被发送到了垃圾邮件收件箱。
这是一个有点难以修复,因为它依赖于电子邮件收件箱提供商。但是,我需要指出的一件事,这将使这非常困难的开始。
您的示例显示您正在将电子邮件从Gmail地址发送到同一个Gmail地址。因此,Gmail知道它没有从该Gmail地址发送电子邮件,并立即将其视为可疑邮件。您实际上是在欺骗您自己的电子邮件地址。如果您已为该地址设置了single sender verification with SendGrid,所有的工作就是告诉SendGrid您拥有该电子邮件地址,而不是试图伪造任何人的电子邮件地址。
然而,在一些情况下,如果你希望电子邮件到达收件箱而不是垃圾邮件收件箱,那么你最好的选择是从你拥有的域发送,你可以authenticate with SendGrid .当你验证一个域,它设置了一些东西,如SPF和DKIM,显示收件箱,你是该域的合法所有者,并通过验证,从该域发送电子邮件.这意味着你更有可能到达收件箱,而不是垃圾邮件。
还有很多要注意,以确保您的电子邮件远离垃圾邮件,但在这种情况下,我会从域身份验证开始。

相关问题