首页 > 解决方案 > 如何解决 AttributeError:SMTP_SSL 实例在 Python 中没有属性“__exit__”?

问题描述

谁能帮我解决这个错误: AttributeError: SMTP_SSL instance has no attribute ' 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)

标签: pythonemailsslpython-2.xsmtplib

解决方案


在 Python3.3 中添加了对 usingwith语句的支持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()

推荐阅读