1

我在 forms.py 中有这个功能。我的 settings.py 中目前没有电子邮件规范。

def send_email(FROM_NAME,FROM,TO,SUB,MSG,EXISTING_EMAIL,EXISTING_PASSWORD):

    FROMADDR = "%s <%s>" % (FROM_NAME, FROM)
    LOGIN    = EXISTING_EMAIL
    PASSWORD = EXISTING_PASSWORD
    TOADDRS  = [TO]
    SUBJECT  = SUB

    msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"  % (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
    msg +=  MSG+"\r\n"

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.set_debuglevel(1)
    server.ehlo()
    server.starttls()
    server.login(LOGIN, PASSWORD)
    server.sendmail(FROMADDR, TOADDRS, msg)
    server.quit()

我这样称呼views.py

send_email('my_name','from_me@gmail.com','to_som1@gmail.com','my      subject','mymessage','my_existing_email@gmail.com','password_to_existing_email')

这在本地有效。我已经用 yahoomail 和 gmail 对其进行了测试。但是当我上传到 heroku 时,它给出了错误“(535,'5.7.1 请使用您的网络浏览器登录,然后重试。了解更多信息,请访问\n5.7.1 support.google.com/mail/bin/answer.py ?answer=78754 et6sm2577249qab.8')"

任何人都可以帮忙吗?

4

4 回答 4

1

你想用这个:

FROMADDR = "%s <%s>" % (your_name, your_email)
于 2012-08-11T18:33:53.603 回答
0

您是否阅读了错误消息中链接的页面?

如果系统反复提示您输入用户名和密码,或者您收到“凭据无效”或“需要 Web 登录”错误,请确保您的密码正确。请记住,密码区分大小写。

如果您确定密码正确,请从网页版 Gmail 登录您的帐户,而不是通过http://mail.google.com

在大多数情况下,从 Web 登录应该可以解决问题

于 2012-08-17T23:12:02.763 回答
0

这对我有用。在尝试从我的 Web 应用程序发送电子邮件时收到错误后Please log in with your web browser and then try again. Learn more etc.,我从本地计算机通过浏览器登录到电子邮件。

登录后,顶部有一个黄色通知栏,询问我是否要允许外部应用程序访问我的邮件。我确认了这一点,谷歌要求我在接下来的 10 分钟内从应用程序登录该帐户。这会将应用程序列入白名单。

于 2013-02-12T21:26:39.977 回答
0

您不应该使用字符串插值来构建电子邮件,这是让您的网站习惯于通过标头注入发送垃圾邮件的好方法。有关如何安全地构建电子邮件的详细信息,请参阅我的答案

一般来说,从地址格式化时,应该使用 format Display Name <email@example.com>。有关详细信息,请参阅RFC 5322

于 2012-08-11T18:35:19.037 回答