我正try 使用python发送邮箱(Gmail),但收到以下错误.

Traceback (most recent call last):  
File "emailSend.py", line 14, in <module>  
server.login(username,password)  
File "/usr/lib/python2.5/smtplib.py", line 554, in login  
raise SMTPException("SMTP AUTH extension not supported by server.")  
smtplib.SMTPException: SMTP AUTH extension not supported by server.

Python脚本如下所示.

import smtplib
fromaddr = 'user_me@gmail.com'
toaddrs  = 'user_you@gmail.com'
msg = 'Why,Oh why!'
username = 'user_me@gmail.com'
password = 'pwd'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

推荐答案

在直接进入STARTTLS之前,你需要说EHLO:

server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()

此外,您还应该真正创建From:To:Subject:邮件头,与邮件正文之间用空行分隔,并使用CRLF作为EOL标记.

例如.

msg = "\r\n".join([
  "From: user_me@gmail.com",
  "To: user_you@gmail.com",
  "Subject: Just a message",
  "",
  "Why, oh why"
  ])

Note:

为了实现这一点,你需要在你的gmail账户配置中启用"允许不那么安全的应用"选项.否则,当gmail检测到非谷歌应用试图登录你的账户时,你会收到"严重安全alert ".

Python相关问答推荐

在matplotlib中使用不同大小的标记顶部添加批注

Gekko中基于时间的间隔约束

提高算法效率的策略?

如何在一组行中找到循环?

使用polars. pivot()旋转一个框架(类似于R中的pivot_longer)

Pandas 数据帧中的枚举,不能在枚举列上执行GROUP BY吗?

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

利用广播使减法更有效率

Pandas查找给定时间戳之前的最后一个值

django中没有预期的输出

Matplotlib中破碎Barh图的渐变 colored颜色

当使用随机均匀(a,b)时,b是包含的还是排他的?

带极点数据帧的倒数值(&Q;)

在单个图形上使用Pandas DataFrame.lot()绘制比例大不相同且x轴相同的条形图和y线条

极点:AWS S3连接池

Python:比较日期并批量更新某些字段

我的tkinter应用程序不会改变它正在加载的文件

我想把字转换成8位二进制,但某些字符是7位的

提供不正确结果的Python IP验证

在Python中优化乘法FOR循环