我想通过 Amazon AWS SES 从我的 Ubuntu 服务器发送电子邮件。我有一个有效的代码,它可以发送电子邮件。
但是,当我将工作代码包装在函数中时,它会给出此错误:
Something with SMTP went wrong...
(554, b'Transaction failed: Nested group')
我正在附上视觉代码比较,..我很好奇可能出了什么问题。
AWS SES 对消息格式有非常严格的检查。我不知道你的真实数据是什么,但我在邮件中遇到了这种情况,这些邮件碰巧被包装,因此该行的第一个字符是句点,这在 SMTP 中具有特殊含义。您应该通过在这些行前面加上一个额外的句点作为前缀来转义这些行,接收服务器将删除这些句点,但我强烈建议您让 Python 标准库的
email.message
模块 为您完成所有工作,因为这样会处理这个问题以及类似的问题,例如换行,对非 ASCII 数据使用适当的编码等,并且代码更少:
from email.message import EmailMessage
from smtplib import SMTP_SSL
def send_test_email(smtp_params, from_address, to_address, subject, body):
server_port = int(smtp_params["SMTP_PORT"])
message = EmailMessage()
message.set_content(body)
message['To'] = to_address
message['From'] = from_address
message['Subject'] = subject
with SMTP_SSL(smtp_params["SMTP_HOSTNAME"], port=server_port) as server:
server.set_debuglevel(1)
server.login(smtp_params["SMTP_USERNAME"], smtp_params["SMTP_PASSWORD"])
server.send_message(message)
server.quit()