【发布时间】:2017-08-08 00:04:32
【问题描述】:
发送大量电子邮件响应时,此错误554, Transaction failed: Duplicate header subject。我使用smtplib + aws SES。对于所有消息,标头必须相同。我该如何解决这个错误?如果发送没有主题的消息,一切正常。
import smtplib
import json
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
args = []
msg = MIMEMultipart('alternative')
msg['From'] = 'noreply@example.com'
html = open('mail.html').read()
EMAIL_HOST = 'email-smtp...'
EMAIL_HOST_USER = 'sss'
EMAIL_HOST_PASSWORD = 'ssssss'
EMAIL_PORT = 587
def lambda_handler(event, context):
body = event['Records'][0]['Sns']['Message']
global args
args = json.loads(body)['args']
set_worker(json.loads(body)['method'])()
return 'success'
def set_worker(method):
return {
'email' : email
}.get(method, 'Not found')
def email():
global msg, html
name = args[0]
title = args[1]
msg_body = args[2]
email = args[3]
url = args[4]
subject = "Test"
msg['Subject'] = subject
msg['To'] = email
html = html.format(title, community_name, title, msg_body, community_name)
mime_text = MIMEText(html, 'html')
msg.attach(mime_text)
send_message()
def send_message():
mail = smtplib.SMTP(EMAIL_HOST, EMAIL_PORT)
mail.ehlo()
mail.starttls()
mail.login(EMAIL_HOST_USER, EMAIL_HOST_PASSWORD)
mail.sendmail(msg['From'], msg['To'], msg.as_string())
【问题讨论】:
-
问题是具有相同主题的多封邮件......它是一封邮件上的两个主题标题。检查
msg.as_string()的结果,应该清楚到底发生了什么。 -
@michael-sqlbot 你能详细说明一下吗?
-
记录
msg.as_string()返回的值。这是一封完全成型并准备好通过网络发送出去的电子邮件,带有标题和正文,与您在 Gmail 中查看邮件并单击“显示原件”时看到的内容相同——用于传输的格式的消息。该错误似乎表明电子邮件标题包含两个Subject:行而不是一个,这是错误的。将失败电子邮件的msg.as_string()的输出编辑到问题中。
标签: python python-2.7 amazon-ses smtplib