发送不在heroku上工作的电子邮件

时间:2012-08-11 18:28:34

标签: django gmail

我在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 个答案:

答案 0 :(得分:1)

你想用这个:

FROMADDR = "%s <%s>" % (your_name, your_email)

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

  

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

     

如果您确定自己的密码是否正确,请从中登录您的帐户   Gmail的网络版,而不是http://mail.google.com

     

在大多数情况下,从网上登录应解决问题

答案 3 :(得分:0)

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

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