Iniciar um script python no IDLE funciona, mas no terminal eu recebo uma instância de SMTP não tem erro de atributo 'send_message'

2

Eu tenho um script que resulta em um e-mail sendo enviado com o módulo smtplib.SMTP python.

Quando eu corro de dentro de IDLE é envia bem sem mensagens de erro. Eu estou tentando várias maneiras de automatizá-lo com crontab para ir todos os dias às 10h.

Se eu o executar no terminal, recebo um erro:

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

Por que funcionaria no IDLE, mas não quando chamado pelo terminal?

    
por paullystew 07.05.2014 / 17:38

1 resposta

2

O método send_message to SMTP class foi adicionado no Python 3.2 . Você está chamando o script para ser executado usando python , que é um link simbólico para o Python 2. Como o método send_message não está definido no Python 2, você obtém um AttributeError .

Para superar isso, você precisa chamar seu script usando o Python 3.2 ou mais recente. Execute como:

python3 endofmonth.py

e funcionaria.

Você provavelmente está usando a versão 3 do IDLE do Python, que é a razão pela qual ela funciona lá.

    
por Aditya 07.05.2014 / 17:51