Как решить AttributeError: Экземпляр SMTP_SSL не имеет атрибута __exit__ в Python? - PullRequest
0 голосов
/ 27 декабря 2018

Может ли кто-нибудь помочь мне решить эту ошибку: AttributeError: экземпляр SMTP_SSL не имеет атрибута exit .

Я работаю над небольшим модулем, который отправляет несколько электронных писем с использованием Python.Версия Python: 2.7.15 ОС: MacOS X

import smtplib
import ssl
port = 465  # For SSL
smtp_server = "smtp.gmail.com"
sender_email = "abc@gmail.com"  # type: str # Enter your address
receiver_email = "xyz@gmail.com"  # Enter receiver address
password = 'xyz@0101'
message = """\
Subject: Hi there

This message is sent from Python."""

context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context ) as server:
    server.login(sender_email, password)
    server.sendmail(sender_email, message, receiver_email)

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

удаляет контекст из определения сервера, он будет работать с python 2.7

context=ssl.create_default_context() server=smtplib.SMTP_SSL(smtp_server,port) server.login(sender,password) print('it worked!') server.sendmail(sender,reciever,message) print('Mail sent') server.quit()

0 голосов
/ 27 декабря 2018

Поддержка использования with операторов с smtplib.SMTP_SSL была добавлена ​​в Python3.3, поэтому она не будет работать в Python2.7

Примерно так должно работать:

context = ssl.create_default_context()
server = smtplib.SMTP_SSL(smtp_server, port, context )
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
server.quit()
...