Ошибка при использовании с smtplib.SMTP_SSL (…) в Python

#python #smtp

#python #smtp

Вопрос:

 import smtplib
from email.message import EmailMessage

email="....."
password="....."
print(email)
msg=EmailMessage()
msg['Subject']='AR'
msg['From']=email
msg['To']='......'
msg.set_content('Ok it works')
with smtplib.SMTP_SSL('smtp.gmail.com',465) as smtp:
    smtp.login(email,password)
smtp.sendmail(email,"reciever_email",msg)
  

Возникает ошибка:

SMTPServerDisconnected: пожалуйста, сначала запустите connect()

Я не понимаю, где я ошибся.

Ответ №1:

Диспетчер with контекста определяет smtp продолжительность блока. Вы преждевременно выходите из блока, поэтому smtp он больше не определен, и соединение с сервером прерывается.

Исправление тривиально; сделайте отступ от последней строки, чтобы она была внутри with блока.

Комментарии:

1. Хорошо. спасибо. Это сработало. но в коде были и другие ошибки. Этот код помещает ядро в бесконечный цикл или что-то в этом роде. Должен ли я также поместить здесь правильный код?

2. Я не думаю, что это может привести к сбою вашего ядра. Вероятно, нет необходимости публиковать отдельный ответ, если это просто еще одна копия стандартного примера отправки электронной почты.

3. ОК. И ядро не вылетело, но продолжало работать около 20 минут с любым результатом или чем-либо еще, в последней строке кода есть несколько ошибок. В любом случае спасибо за вашу помощь. Это было хорошее и точное решение.