2

I have a script that results in an email being sent out with smtplib.SMTP python module.

When I run it from within IDLE is sends fine with no error messages. I am trying various ways to automate it with crontab to go everyday at 10am.

If I run it from terminal, I get an error:

$ 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'

Why would it work in IDLE but not when called from terminal?

Jacob Vlijm
  • 85,475
paullystew
  • 21
  • 1
  • 3

1 Answers1

3

The send_message method to SMTP class was added in Python 3.2. You are calling the script to be run using python which is a symlink for Python 2. Since send_message method is not defined in Python 2, you get an AttributeError.

To get over this, you need to call your script using Python 3.2 or newer. Run it as:

python3 endofmonth.py

and it would work.

You are most probably using the Python 3 version of IDLE which is the reason it works there.

Aditya
  • 13,616