谷歌appengine - 如何配置发送和接收电子邮件
问题描述:
我已经GOOGLE了很多关于这一点,我不知道我错过了什么。我有一个接触的形式,使用户可以与我联系:谷歌appengine - 如何配置发送和接收电子邮件
contact.html
<form id="contact" action="" method="post" name="contact">
<label for="subject">Subject:</label>
<input id="id_subject" type="text" name="subject" maxlength="100">
<label for="email">Email:</label>
<input id="id_email" type="text" name="email">
<label for="message">Message:</label>
<textarea id="id_message" rows="10" cols="40" name="message"></textarea>
<input type="submit" value="Submit">
</form>
的app.yaml
inbound_services:
- mail
- url: /_ah/mail/.+
script: main.py
login: admin
main.py
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template
from google.appengine.api import mail
from google.appengine.ext.webapp.mail_handlers import InboundMailHandler
class Contact(webapp.RequestHandler):
def get(self):
self.response.out.write(template.render('contact.html', {}))
def post(self):
sender = self.request.get("email")
subject = self.request.get("subject")
body = self.request.get("message")
message = mail.EmailMessage(sender=sender, subject=subject)
message.to = "[email protected]"
message.body = body
message.send()
class LogSenderHandler(InboundMailHandler):
def receive(self, mail_message):
logging.info("Received a message from: " + mail_message.sender)
def main():
application = webapp.WSGIApplication([('/contact', Contact),
LogSenderHandler.mapping()],
debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
类LogSenderHandler
不起作用,receive()需要额外的参数,我不知道从哪里得到。所以当我部署时我不会评论它。 我的脑海里一团糟。我不知道如何把它放在一起。
当我试图通过电子邮件发送给自己,我得到这个在我的仪表盘日志:
Unauthorized sender
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
handler.post(*groups)
File "/base/data/home/apps/s~projectname/1.354692671370598794/main.py", line 27, in post
message.send()
File "/base/python_runtime/python_lib/versions/1/google/appengine/api/mail.py", line 894, in send
raise ERROR_MAP[e.application_error](e.error_detail)
InvalidSenderError: Unauthorized sender
你能帮助吗?
答
由于您无权使用该电子邮件,因此无法通过表单上提交的电子邮件发送。您必须通过连接到他们的Google帐户来使用您控制的电子邮件或用户的电子邮件。 http://code.google.com/appengine/docs/python/mail/sendingmail.html本页说明您可以用来发送电子邮件的电子邮件,只需在第一个代码块后面向下滚动即可。
答
发件人的电子邮件地址,发件人地址。发件人地址 必须是以下类型之一:
注册管理员为应用程序的地址。您可以使用管理控制台将管理员添加到应用程序。
用Google帐户登录的当前请求的用户地址。您可以使用用户API确定当前用户的电子邮件地址。 用户的帐户必须是Gmail帐户,或位于由Google Apps 管理的域中。
任何有效的应用程序的电子邮件接收地址(如[email protected])。
所以,如果您的发件人的电子邮件ID是不是其中之一,你会得到这个错误。
谢谢,我会用我自己的电子邮件地址发送。 – BPm