我写了一个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")
什么都没有出现!这很奇怪
答案 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,然后发送电子邮件。