【问题标题】:Sendgrid working from terminal but not in pycharmSendgrid 从终端工作但不在 pycharm 中
【发布时间】:2019-08-07 14:27:48
【问题描述】:

我正在尝试将基本的邮件发送方 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()

【问题讨论】:

  • 你在PyCharm任务配置中设置环境变量了吗?
  • 是的,确实解决了这个问题。谢谢

标签: python terminal pycharm sendgrid


【解决方案1】:

目前尚不清楚您是如何在 PyCharm 中运行的。我猜您在 PyCharm 中时并未实际设置您的环境变量。尝试查看 API 密钥,看看它是否符合您的预期(只需打印或使用调试器)

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

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

您也可以尝试在启动 PyCharm 之前设置环境变量,它可能会选择它,但这取决于很多其他事情。

【讨论】:

  • 解决了我的问题,谢谢!当我从终端执行必要的命令时,仍然不明白为什么 pycharm 没有获取环境变量。
【解决方案2】:

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

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

【讨论】:

  • 您好,首先感谢您的回答。在发帖之前,我已经尝试过您在第一段中所说的内容,但没有奏效。我还编写了“真正的 api 代码”,我必须将其写入“my_api_key”部分,但它也没有工作。我认为我的问题可能出在环境和 py 文件之间的连接上。
猜你喜欢
  • 2015-09-29
  • 2020-12-25
  • 2021-07-11
  • 2014-05-07
  • 2016-09-11
  • 2023-03-10
  • 1970-01-01
  • 2019-11-21
  • 2017-08-23
相关资源
最近更新 更多