首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从GAE发送邮件的困难

从GAE发送邮件的困难
EN

Stack Overflow用户
提问于 2011-04-01 10:32:22
回答 3查看 323关注 0票数 0

我正在尝试从Google App Engine中发送电子邮件。

每当我尝试发送时,都会收到“缺少主题错误”。

当我在开发服务器上运行代码时,它似乎工作得很好-控制台输出看起来是正确的,并且我被带到了我期望的页面。但当我上传并运行它时,我得到:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 636, in __call__
    handler.post(*groups)
  File "/base/data/home/apps/spam-tool/1.349401522260793315/spam-tool.py", line 34, in post
    body=cgi.escape(self.request.get('content')))
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/mail.py", line 297, in send_mail
    message.send(make_sync_call)
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/mail.py", line 799, in send
    raise ERROR_MAP[e.application_error](e.error_detail)
BadRequestError: Missing subject

但肯定有一个主题。

我使用的代码是:

代码语言:javascript
运行
复制
> message = mail.EmailMessage(sender="admin_address@gmail.com>",
            subject="test")
        message.subject=self.request.get('content')
        message.to = addr_to_send_to
        message.body = self.request.get('content')
        message.send()

(是的,主题设置了两次...我只尝试在一个或另一个地方设置它,但都不起作用。)

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-04-01 11:51:52

试试这个:

代码语言:javascript
运行
复制
def email_member(request):
  to_addr = request.POST.get('email_to')

  if not mail.is_email_valid(to_addr):
    # Return an error message...
    pass
  else:
    # note we can also send html email, e.g. html='<html><head></head><body>Hello world</body><html>'
    mail.send_mail(
      sender='admin@yourdomain.com',
      to=to_addr,
      subject=request.POST.get('email_title'),
      body=request.POST.get('email_body'))

我建议你也在任务队列中发送你的电子邮件,所以你可以像这样设置,你可以传递一个唯一的参数,这样你就不太可能被黑客攻击。

代码语言:javascript
运行
复制
def mail_member_information(email_to, email_title, email_body):
  taskqueue.add(
    url = 'email_message',
    params =
    {
      'email_to': email_to,
      'email_title': email_title,
      'email_body': email_body,
      'valid_guid': 'ae9e34ca-a2c5-476e-b8be-72d807e3dc6b'
    }
  )

如果您只想发送给管理员,则使用以下命令:

mail.send_mail_to_admins(sender='admin@yourdomain.com', subject=request.POST.get('email_title'), body=request.POST.get('email_body'), html=request.POST.get('email_body'))

票数 1
EN

Stack Overflow用户

发布于 2011-04-01 10:57:30

我不知道这是不是让你失望的原因...但发送者应该是这样的:

代码语言:javascript
运行
复制
sender = '<admin_address@gmail.com>',

您缺少发件人的“<”。有时,它会在实际错误所在的下游抛出错误。

此外,请确保该admin_address@gmail.com是作为该应用程序的开发人员添加的谷歌帐户。

票数 0
EN

Stack Overflow用户

发布于 2011-04-01 12:39:57

我认为你可以这样发送,确保发送者是应用程序的管理员

代码语言:javascript
运行
复制
from google.appengine.api import mail
mail.send_mail(sender="something@gmail.com",

                 to=email_valid.email,
                 subject="Please validate your email",
                 body=body_text,
                 html=htmlbody_text)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5508582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档