How to solve AttributeError: SMTP_SSL instance has no attribute '__exit__' in Python?
How to solve AttributeError: SMTP_SSL instance has no attribute '__exit__' in Python?
谁能帮我解决这个错误:AttributeError: SMTP_SSL instance has no attribute 'exit'.
我正在开发一个使用 Python 发送多封电子邮件的小模块。
Python版本:2.7.15
OS: 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)
在 Python3.3 中添加了对 with
语句与 smtplib.SMTP_SSL
的支持,因此它在 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()
从服务器定义中删除上下文,它将与 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()
对于您遇到的错误,我们深表歉意。
你出现这些错误的原因是
python 你运行 在你的机器上的版本与python 的版本不同代码写在
你是 运行 python2 意思是代码是 python
您可以进行一些更改
将每次出现的服务器更改为邮件服务器(注意大小写)
将smtp_server改为smtpServer(注意大小写)
带有with语句的行,去掉“with”和“as”关键字。重写如下
mailServer = smtplib.SMTP_SSL(smtpServer, port)
对我来说,当我在前面输入 python3
时它起作用了。例如:python3 /home/pi/yourscript.py
谁能帮我解决这个错误:AttributeError: SMTP_SSL instance has no attribute 'exit'.
我正在开发一个使用 Python 发送多封电子邮件的小模块。 Python版本:2.7.15 OS: 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)
在 Python3.3 中添加了对 with
语句与 smtplib.SMTP_SSL
的支持,因此它在 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()
从服务器定义中删除上下文,它将与 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()
对于您遇到的错误,我们深表歉意。
你出现这些错误的原因是 python 你运行 在你的机器上的版本与python 的版本不同代码写在
你是 运行 python2 意思是代码是 python
您可以进行一些更改
将每次出现的服务器更改为邮件服务器(注意大小写)
将smtp_server改为smtpServer(注意大小写)
带有with语句的行,去掉“with”和“as”关键字。重写如下
mailServer = smtplib.SMTP_SSL(smtpServer, port)
对我来说,当我在前面输入 python3
时它起作用了。例如:python3 /home/pi/yourscript.py