在GAE中连续发送多封电子邮件

时间:2015-03-30 07:42:24

标签: google-app-engine email

我有一个基于GAE的应用程序(python),我正在尝试实现自动电子邮件发送。当只发送一封电子邮件时,它可以正常工作(本地和部署)。但是,当我尝试连续发送两封电子邮件时,该脚本仅适用于我的本地开发服务器。如果将应用程序部署到Google,则会发生奇怪的混淆。看起来第一封电子邮件的正文发送给第二封电子邮件的收件人,然后应用程序抛出内部服务器错误。

这是我的代码:

class MailSender(webapp.RequestHandler):
def get(self):
        firstname=self.request.get('firstname')
        lastname=self.request.get('lastname')
        email=self.request.get('email')
        city=self.request.get('city')
        state=self.request.get('state')
        country=self.request.get('country')        

        sender_address = firstname+" "+lastname+" <"+users.get_current_user().email()+">"
        subject = "Subject 1"
        body = "Name: "+firstname+"\nLast name: "+lastname+"\nEmail: "+email+"\nCity: "+city+"\nState: "+state+"\nCountry: "+country
        mail.send_mail(sender_address, "address1@ourdomain.com", subject, body)

        sender_address1="address1@ourdomain.com"
        subject1="Subject 2"
        body2="message"    
        mail.send_mail(sender_address1, email, subject1, body1)

        self.response.out.write('{"status":"true"}')

2 个答案:

答案 0 :(得分:1)

您似乎没有在第二封邮件中设置有效的发件人地址。

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

  

发件人地址必须是以下类型之一:

     
      
  • 应用程序的注册管理员的地址。您可以使用管理控制台将管理员添加到应用程序。
  •   
  • 使用Google帐户登录的当前请求的用户地址。您可以使用Users API确定当前用户的电子邮件地址。用户的帐户必须是Gmail帐户,或者位于由Google Apps管理的域中。
  •   
  • 该应用的任何有效电子邮件接收地址(例如xxx@APP-ID.appspotmail.com)。
  •   
  • 域帐户的任何有效电子邮件接收地址,例如support@example.com。域帐户是Google域外的帐户,其电子邮件地址不以@ gmail.com或@ APP-ID.appspotmail.com结尾。
  •   

答案 1 :(得分:0)

您可能需要按照此处的方式使用EmailMessage对象。您是否尝试使用循环发送电子邮件?以下适用于我。

for detail in details:
    subject = detail.title or 'Reminder'
    message = mail.EmailMessage(sender='Business <info@business.com>', subject=subject)
    message.body = """
    Hello!
    """ 
    message.to = detail.email
    message.send()