如何使用python通过Gmail发送电子邮件?

时间:2014-11-13 11:58:30

标签: python python-2.7

我尝试使用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,但我不知道它是不是解决方案。

那么,问题是什么?我的帐户设置?我的代码?

3 个答案:

答案 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,然后为您的脚本生成特定于应用程序的密码。我这样做(我也有类似的代码),它工作正常。