我有一个基于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"}')
答案 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()