为什么我的django应用程序无法使用Google App Engine和指定的SMTP设置发送电子邮件?

时间:2013-12-29 21:13:51

标签: django google-app-engine email

我写了一个django应用程序,它发送电子邮件很好。我现在将其移植到Google App Engine中使用它,但由于某些原因它不会发送。这是怎么回事?      settings.py

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'xxxx@gmail.com'
EMAIL_HOST_PASSWORD = 'xxx'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

*views.py*

from google.appengine.api import mail
import webapp2

...

mail.send_mail(to="xxx@gmail.com", sender="test@test.com", subject="test", body="Hello World")

什么都没有出现!这很奇怪

2 个答案:

答案 0 :(得分:0)

你不能只使用,也不能用app引擎指定任何旧的smtp服务器。您必须使用提供的邮件api。电子邮件似乎也来自应用程序的管理员。

  

如果配置为执行,开发Web服务器可以发送电子邮件   使用命令行选项。它可以使用SMTP服务器或   Sendmail应用程序(如果有)。 当您的应用程序运行时   在App Engine上,它使用App Engine邮件服务发送电子邮件   消息即可。有关更多信息,请参阅开发Web服务器。

https://developers.google.com/appengine/docs/python/mail/sendingmail

以下是他们给出的例子:

import webapp2

from google.appengine.api import mail
from google.appengine.api import users

    class InviteFriendHandler(webapp2.RequestHandler):
    def post(self):
        user = users.get_current_user()
        if user is None:
          login_url = users.create_login_url(self.request.path)
          self.redirect(login_url)
          return
        to_addr = self.request.get("friend_email")
        if not mail.is_email_valid(to_addr):
            # Return an error message...
            pass

        message = mail.EmailMessage()
        message.sender = user.email()
        message.to = to_addr
        message.body = """
I've invited you to Example.com!

To accept this invitation, click the following link,
or copy and paste the URL into your browser's address
bar:

%s
        """ % generate_invite_link(to_addr)

        message.send()

答案 1 :(得分:0)

在Google App Engine上发送电子邮件受到限制,只能使用属于项目所有者或开发人员的电子邮件地址

和Django有自己的发送电子邮件的机制,为了更好的集成,我建议你使用一些Django库,如Django Rocket Engine

下载源代码并将其放在App Engine项目下,部署它并将此行放在settings.py中:

EMAIL_BACKEND = 'rocket_engine.mail.EmailBackend'

集成后,您不需要自己使用GAE Email API,只需像往常一样使用Django电子邮件API,然后发送电子邮件。