【问题标题】:Sending email not working on heroku发送电子邮件在heroku上不起作用
【发布时间】:2012-08-08 15:14:34
【问题描述】:

我在 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')"

谁能帮忙?

【问题讨论】:

  • 你的问题被标记为“Django”;是否有某些原因您不使用 Django 的 built-in e-mail sending(它可以防止标头注入以及其他便利)。
  • 是的,我试过了,但是出错了!
  • 你能帮我用 django 让它工作吗?
  • 当然可以。向我们展示您与send_mail 一起使用的代码,以及您在尝试时收到的错误消息(复制和粘贴回溯)。可能最好将其编辑到您现有的问题中。

标签: django gmail


【解决方案1】:

你想用这个:

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

【讨论】:

  • 当我上传到 heroku 时,此代码不起作用。你知道为什么吗?它给出错误“(535,'5.7.1请使用您的网络浏览器登录,然后重试。了解更多信息\n5.7.1 support.google.com/mail/bin/answer.py?answer=78754 et6sm2577249qab.8')”
  • 这似乎是 gmail 身份验证的问题。与登录名/密码有关,与电子邮件标题无关。仔细检查您的 LOGINPASSWORD 变量。请注意,LOGIN 只是您的电子邮件地址,而不是 Name &lt;email&gt;
【解决方案2】:

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

一般来说,从地址格式化时,您应该使用格式Display Name &lt;email@example.com&gt;。详情请见RFC 5322

【讨论】:

【解决方案3】:

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

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

如果您确定密码正确,请从 网页版 Gmail,而不是 http://mail.google.com

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 2014-05-05
      • 1970-01-01
      • 2016-02-11
      • 2012-08-01
      • 2018-10-30
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多