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
类方法SMTP
python
。您正在使用Python 2 的符号链接调用要运行的脚本。由于send_message
方法未在 Python 2 中定义,因此您会得到一个AttributeError
。
为了解决这个问题,你需要使用 Python 3.2 或更新版本调用你的脚本。运行如下:
python3 endofmonth.py
而且它能够发挥作用。
您很可能正在使用 Python 3 版本的 IDLE,这就是它在那里运行的原因。