在 IDLE 中启动 python 脚本有效,但在终端中我收到 SMTP 实例没有属性“send_message”错误

在 IDLE 中启动 python 脚本有效,但在终端中我收到 SMTP 实例没有属性“send_message”错误

smtplib.SMTP我有一个脚本,可以使用python 模块发送一封电子邮件。

当我在 IDLE 中运行它时,它发送正常,没有错误消息。我正在尝试各种方法,使用 crontab 每天上午 10 点自动运行它。

如果我从终端运行它,我会收到错误:

$ python endofmonth.py
Traceback (most recent call last):
  File "endofmonth.py", line 74, in <module>
    s.send_message(msg)
AttributeError: SMTP instance has no attribute 'send_message'

为什么它在 IDLE 中可以工作,但从终端调用时却不工作?

答案1

Python 3.2 中增加了send_message类方法SMTPpython。您正在使用Python 2 的符号链接调用要运行的脚本。由于send_message方法未在 Python 2 中定义,因此您会得到一个AttributeError

为了解决这个问题,你需要使用 Python 3.2 或更新版本调用你的脚本。运行如下:

python3 endofmonth.py

而且它能够发挥作用。

您很可能正在使用 Python 3 版本的 IDLE,这就是它在那里运行的原因。

相关内容