我尝试使用python使用我的Gmail帐户发送电子邮件。我已经在这里和互联网上阅读了很多问题,但没有一个能解决我的问题。
我使用的代码如下(感谢rosettacode),这与可以找到关于此主题的许多其他代码段非常相似:
def sendemail(from_addr, to_addr_list, cc_addr_list,
subject, message,
login, password,
smtpserver='smtp.gmail.com:587'):
header = 'From: %s\n' % from_addr
header += 'To: %s\n' % ','.join(to_addr_list)
header += 'Cc: %s\n' % ','.join(cc_addr_list)
header += 'Subject: %s\n\n' % subject
message = header + message
server = smtplib.SMTP(smtpserver)
server.ehlo()
server.starttls()
server.ehlo()
server.login(login,password)
problems = server.sendmail(from_addr, to_addr_list, message)
server.quit()
return problems
我的问题是在登录阶段。它返回以下错误消息:
SMTPAuthenticationError: (534, '5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsMX\n5.7.14 Z4_8qLgwTbhS2CwFvVApFvRfpIS1Vbbfun6gHcf0D6jgSQ-ixMn79mf3AivveTs9IhYsgq\n5.7.14 pmrp157H4Vmk6-ybAC9u2d2lNMYyy5pdmociqeSxBBwFGEPGJKHKdJpSocx86gzG-im6V-\n5.7.14 hsOeMKiJRAuGZjHUprEwj8oABwLzWQ8vEzovpXk79M-i8cnFseW-PNLxLlsK21WaLHLKmZ\n5.7.14 Ll3tEgQ> Please log in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 dc8sm25406976wib.7 - gsmtp')
我按照建议的链接找到this answer,但我不知道它是不是解决方案。
那么,问题是什么?我的帐户设置?我的代码?
答案 0 :(得分:2)
另一种方法是使用其他SMTP服务器进行发送。
答案 1 :(得分:1)
您引用的错误消息说
[..] Please log in via your web browser and then try again.
5.7.14 Learn more at
5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754
这已在server send emails using gmail smtp gets alerts中讨论过。
所以我说你的代码很好,并且你正在处理特定于Google的安全机制。
答案 2 :(得分:1)
您可以启用Google's 2-step authentication,然后为您的脚本生成特定于应用程序的密码。我这样做(我也有类似的代码),它工作正常。