Cant send email via python using gmail - smtplib.SMTPException: SMTP AUTH extension not supported by server(无法使用 gmail 通过 python 发送电子邮件 - smtplib.SMTPException:服务器不支持 SMTP AUTH 扩展)
问题描述
我只想在 python 中发送一封带有附件的电子邮件
I just want to send an email in python with an attachment
import smtplib, os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
def send_mail(send_from, send_to, subject, text, files=[], server="localhost"):
assert type(send_to)==list
assert type(files)==list
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = COMMASPACE.join(send_to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )
for f in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(f,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
msg.attach(part)
smtp = smtplib.SMTP('smtp.gmail.com:587')
smtp.login('fu@gmail.com','fu')
smtp.sendmail(send_from, send_to, msg.as_string())
smtp.close()
ATTACHMENTS = ['/tmp/2013-11-04-test.csv']
send_from=['fu@gmail.com']
send_to=['fu@gmail.com']
subject='adfadfadf'
text = 'adfadfadf'
send_mail(send_from, send_to, subject, text, files=ATTACHMENTS)
我如何进行身份验证?我必须提供用户名和密码.怎么样?
How do I auth? I have to provide a username and password. How?
Traceback (most recent call last):
File "/home/ubuntu/workspace/miliza-devops/classes/utilities.py", line 133, in <module>
send_mail(send_from, send_to, subject, text, files=ATTACHMENTS)
File "/home/ubuntu/workspace/miliza-devops/classes/utilities.py", line 124, in send_mail
smtp.login('fu@gmail.com','fu')
File "/usr/lib/python2.7/smtplib.py", line 576, in login
raise SMTPException("SMTP AUTH extension not supported by server.")
smtplib.SMTPException: SMTP AUTH extension not supported by server.
推荐答案
您需要在登录前调用 starttls()
:
You need a call to starttls()
before you login:
smtp = smtplib.SMTP('smtp.gmail.com:587')
smtp.starttls()
smtp.login('fu@gmail.com', 'fu')
另外,您的 send_from
应该是 str
,而不是 list
:
Also, your send_from
should be a str
, not a list
:
send_from='fu@gmail.com'
注意 smtp.starttls()
隐式调用 smtp.ehlo()
:
如果此会话之前没有 EHLO 或 HELO 命令,则此方法首先尝试 ESMTP EHLO.https://docs.python.org/2/library/smtplib.html#smtplib.SMTP.starttls
If there has been no previous EHLO or HELO command this session, this method tries ESMTP EHLO first. https://docs.python.org/2/library/smtplib.html#smtplib.SMTP.starttls
这篇关于无法使用 gmail 通过 python 发送电子邮件 - smtplib.SMTPException:服务器不支持 SMTP AUTH 扩展的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:无法使用 gmail 通过 python 发送电子邮件 - smtplib.SMTPException:服务器不支持 SMTP AUTH 扩展


基础教程推荐
- 筛选NumPy数组 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01