Sendgrid 从终端工作但不在 pycharm

Sendgrid working from terminal but not in pycharm

我正在尝试将基本的邮件发件人 sendgrid 函数连接到我的程序管道。问题是当我从终端执行必要的命令时,它工作正常,如:

echo "export SENDGRID_API_KEY='YOUR_API_KEY'" > sendgrid.env

echo "sendgrid.env" >> .gitignore

source ./sendgrid.env

python3 sendgrid_mail.py

但是当我尝试从 PyCharm 运行 它时,它给我 HTTP 错误 401:未经授权 错误。

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

def mail_sender():
    message = Mail(
        from_email='from_mail',
        to_emails='to_mail',
        subject='hello pycharm',
        html_content='<strong>and easy to do anywhere, even with Python</strong>')
    try:
        sg = SendGridAPIClient(os.environ.get('my_api_key'))
        response = sg.send(message)
        print(response.status_code)
        print(response.body)
        print(response.headers)
    except Exception as e:
        print(e)

mail_sender()

您正在获取环境变量 my_api_key,但您在 sendgrid.env 中将环境变量设置为 SENDGRID_API_KEY。这两个名字需要匹配。

我假设 sendgrid.env 文件中的 YOUR_API_KEY 是您创建的 api 密钥。如果不是,则需要将其替换为实际值。

不清楚您在 运行 PyCharm 中的表现如何。我猜你在 PyCharm 时实际上并没有设置你的环境变量。尝试查看 API 键,看看它是否符合您的预期(打印或使用调试器)

您可以在 运行 配置中修改环境变量

Run | Edit Configurations... | Select the run configuration you're using | Environment variables ....

您也可以尝试在启动前设置环境变量 PyCharm 它可能会自动启动,但这取决于很多其他因素。