我正在使用这段代码:
import smtplib
fromaddr = 'fromuser@gmail.com'
toaddrs = 'myemail@gmail.com'
msg = 'There was a terrible error that occured and I wanted you to know!'
# Credentials (if needed)
username = 'myusername'
password = 'passwd'
# The actual mail send
server = smtplib.SMTP_SSL('smtp.gmail.com',465)
server.ehlo()
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
我收到此错误:
Traceback(最近一次调用最后一次):文件“C:/Python34/sendemail.py”, 第15行,在 server.starttls()文件“C:\ Python34 \ lib \ smtplib.py”,第673行,在starttls中 提升SMTPException(“服务器不支持STARTTLS扩展名。”)smtplib.SMTPException:服务器不支持STARTTLS扩展名。
当我执行exculde server.starttls()时,我收到有关身份验证的不同错误消息。当我使用webdriver和凭证通过网络浏览器访问Gmail时,我还有另一个代码价格,因此我复制并粘贴到此代码以确保凭据正确无误。
我无法弄清楚为什么这不起作用。
提前致谢。
答案 0 :(得分:3)
答案 1 :(得分:0)
使用此代码时,通过Gmail发送功能对我有用。请注意,我使用smtplib.SMTP()
而不是smtplib.SMTP_SSL('smtp.gmail.com',465)
。 也尝试使用端口587而不是465。
server = smtplib.SMTP()
server.connect(server, port)
server.ehlo()
server.starttls()
server.login(username, password)
server.sendmail(send_from, send_to, msg)
server.close()
虽然我发现使用emails
库更容易。
答案 2 :(得分:0)
请尝试yagmail。免责声明:我是维护者,但我觉得它可以帮助所有人!
它确实提供了很多默认设置:我很确定您可以直接发送电子邮件:
import yagmail
yag = yagmail.SMTP(username, password)
yag.send(to_addrs, contents = msg)
您必须首先安装yagmail
:
pip install yagmail # python 2
pip3 install yagmail # python 3
一旦你想要嵌入html /图像或添加附件,你真的喜欢这个包!
它还可以防止您在代码中输入密码,从而使其更加安全。
答案 3 :(得分:0)
你要么使用smtplib.SMTP()然后使用starttls()(我不推荐),要么单独使用smtplib.SMTP_SSL()(之后不要使用starttls())