【问题标题】:Send email on GAE using Django module (django.core.mail)使用 Django 模块 (django.core.mail) 在 GAE 上发送电子邮件
【发布时间】:2013-02-03 18:43:12
【问题描述】:

在将我的应用程序迁移到 GAE 之前,我使用以下代码发送电子邮件并且效果很好:

from django.core.mail import send_mail

subject = 'Hello!'
msg = '\n \n Hello World!'
sender = settings.DEFAULT_FROM_EMAIL
to = ['xx@xx.com']

send_mail(subject,msg,sender,to,fail_silently=False)

现在,在迁移到 GAE(在 Python 2.7 上)后,它就不起作用了。它只是抛出以下错误:

Exception Type: NotImplementedError
Exception Location: C:\Program Files(x86)\Google\google_appengine\google\appengine\api\remote_socket\_remote_socket.py in gethostbyaddr, line 256

我将 settings.py 文件配置为 follo

EMAIL_USE_TLS = True
EMAIL_HOST = 'xxx.yyy.com'
EMAIL_HOST_USER = 'my.account@yy.com'
EMAIL_HOST_PASSWORD = 'zzzzzzzzz'
EMAIL_PORT = 587

是否有人在 GAE 上使用 Django 模块发送电子邮件并了解该错误?

【问题讨论】:

    标签: django google-app-engine djangoappengine django-mailer


    【解决方案1】:

    如果您想从 AppEngine 发送电子邮件,您应该使用mail.send_mail()

    from google.appengine.api import mail
    
    mail.send_mail(sender="Example.com Support <support@example.com>",
                  to="Albert Johnson <Albert.Johnson@example.com>",
                  subject="Your account has been approved",
                  body="Hello, world!")
    

    【讨论】:

    • 这是另一种选择@Lipis(直接使用来自google appengine的api或使用第三方appengine_emailbackend)。我想通了这个问题。但现在我和另一个人在一起:试图将谷歌邮件重定向到我的个人邮件(我希望电子邮件将使用如下地址发送:my_email@mydomain.com)。我看到了与here 相关的东西。你知道怎么做吗?
    • @Raulsc 如果您阅读了文档,发件人应该是您的应用程序的管理员,您可以将您的 GAE 应用程序连接到您的自定义域,以便能够将 my_email@mydomain.com 添加到管理员列表。听起来很吓人,但最终您必须为您的应用拥有一个自定义域,这就是您应该这样做的方式。
    • @Raulsc 您应该阅读如何将您的应用程序与自定义域连接(使用 Google Apps)
    【解决方案2】:

    我想出了为什么会出现该错误的问题:

    GAE 不支持 Django send_mail。有必要在我们的应用程序中添加一个 Django 电子邮件后端以允许它在 GAE 上执行。

    两个步骤:

    1. 导入第三方模块 --> appengine_emailbackend

    2. 在您的 settings.py 文件中写下以下行之一:

      EMAIL_BACKEND = 'appengine_emailbackend.async.EmailBackend'

      EMAIL_BACKEND = 'appengine_emailbackend.EmailBackend'

    即便如此,使用该后端后,它不会抛出任何错误,但不会发送任何内容。

    有人可以帮忙吗?

    【讨论】:

    • 我发现了问题:当 django 应用程序迁移到 GAE 时,无法使用不同于 Google 的邮件程序。当我尝试使用另一个邮件程序发送电子邮件时,send_mail 函数给我一个错误:“未经授权的发件人”。所以,对不起,伙计们,但知道我们只能使用 gmail 帐户发送电子邮件。
    猜你喜欢
    • 2014-11-07
    • 2017-05-17
    • 2020-09-08
    • 1970-01-01
    • 2013-03-07
    • 2019-08-29
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多