python - 为什么我在尝试通过 Python 发送和发送电子邮件时收到“SMTPServerDisconnected”?
问题描述
我利用我的 Android 手机通过 python 编码发送一封简单的电子邮件。这是代码:
import os
import smtplib
EMAIL_ADDRESS =os.environ.get('EMAIL_USER')
EMAIL_PASSWORD =os.environ.get('EMAIL_PASS')
with smtplib.SMTP('smtp.gmail.com', 465) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
subject = 'Practice email code'
body = 'This is my 1st output'
msg = f'Subject:{subject}\n{body}'
smtp.sendmail(EMAIL_ADDRESS, EMAIL_ADDRESS, msg)
这是我得到的回溯:
回溯(最后一次调用):文件“/data/user/0 ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py”,第 31 行,在 start(fakepyfile,mainpyfile) 文件“/data/user/ 0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py”,第 30 行,在 start exec(open(mainpyfile).read(), main .dict )文件“”,第 7 行,在文件“/ data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.7/smtplib.py”,第 251 行,在init (代码,味精)= self.connect(主机,端口)文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.7/smtplib.py”,第338行,在连接(代码,味精)= self.getreply()文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.7/smtplib.py”,第394行, 在 getreply 中引发 SMTPServerDisconnected("连接意外关闭") smtplib.SMTPServerDisconnected: 连接意外关闭
编辑:当我尝试 587 端口时,这是错误:
Traceback(最近一次调用最后一次):文件“”,第 12 行,在文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.7/smtplib.py”中,第 721 行,在登录 initial_response_ok=initial_response_ok) 文件“/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.7/smtplib.py”,第 638 行,在 auth authobject( challenge).encode('ascii'), eol='') AttributeError: 'NoneType' object has no attribute 'encode'
在处理上述异常的过程中,又出现了一个异常:
Traceback(最近一次调用最后一次):文件“/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py”,第 31 行,在 start(fakepyfile,mainpyfile) 文件“/data/user /0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py”,第 30 行,在 start exec(open(mainpyfile).read(), main .dict )文件中“”,第 19 行,在文件中“ /data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.7/smtplib.py”,第 280 行,退出 引发 SMTPResponseException(代码,消息)smtplib.SMTPResponseException:(334 , b'UGFzc3dvcmQ6')
我很感激任何建议!
解决方案
这是使用 SMTP 的正确方法
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login('EMAIL', 'PASSWORD')
server.sendmail('EMAIL to send from',to, msg)
server.close()
此外,您的电子邮件应允许外部资源访问您的电子邮件,从而降低安全性,因此我建议为此使用额外的电子邮件
推荐阅读
- flutter - 酒店客人一次登录扑腾
- html - 从下到上填充 SVG 心形
- java - SpringBoot 用户缺少权限或找不到对象 HSQLDB
- cmake - 如何构建 libobs 作为 obs-studio-node 模块的依赖项?
- java - 如何修复无法从静态上下文中引用的非静态变量
- azure-functions - Azure 函数的 CosmosDB 触发器
- react-native - react-native-view-shot:NativeModules.RNViewShot 未定义。确保库在本机端链接
- c++ - 使用 `std::accumulate` 和 constexpr
- azure - 需要创建 ARM 模板以在 Azure 应用服务中启用自动修复,并根据 HTTP 状态代码范围 (400-530) 自定义自动修复
- python - 如何在python中调用多个基类__init__