提问人:ser-zhm 提问时间:10/11/2023 更新时间:10/11/2023 访问量:35
550, b'[SPF] 域的 SPF 记录禁止此主机代表域发送邮件\n
550, b'[SPF] The SPF record for domain prohibits this host from sending mail on\nbehalf of domain
问:
我有一个简单的 Flask 表单,用户可以在其中向我发送消息。代码如下:
def send_general_query(email, message, name):
receiver_email = sender_email = Config.SMTP_SENDER
msg = MIMEMultipart()
msg['Subject'] = 'Message'
msg['From'] = email
msg['To'] = receiver_email
html = f"""
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<p>From: {name}</p>
<p>{message}</p>
</body>
</html>
"""
msgText = MIMEText(html, 'html')
msg.attach(msgText)
try:
with smtplib.SMTP(Config.SMTP_SERVER, 587) as
smtpObj:
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(Config.SMTP_SENDER, Config.SMTP_PASSWORD)
smtpObj.sendmail(sender_email, receiver_email,
msg.as_string())
except Exception as e:
print(e)
所以它基本上是把电子邮件发给自己。当我使用一些众所周知的域(如 gmail 和 yahoo)测试表单时,我没有收到任何错误,邮件会发送到我的邮箱。 但是当我以表单使用其他自定义电子邮件域时,我得到以下 SPF 失败:
(550, b'[SPF] custom_domain.com 的 SPF 记录禁止此主机 发送邮件\n代表 From: 邮件头中找到的custom_domain.com。')
我认为这是因为我与sender_email = (Config.SMTP_SENDER)
msg['From'] = email
我试图将 SPF 记录包含在我的 DNS 中,如下所示:
“v=spf1 include:_spf.custom_domain.com ~all”
但表单 STIL 返回相同的错误。
我当然可以将此行留空并在电子邮件正文中返回用户的电子邮件,但是当我想使用我的邮箱回复用户时,我需要手动将该电子邮件复制/粘贴到标题中。
为什么代码接受某些域之间的不匹配,而不接受其他域?msg['From'] = ''
sender_email
msg['From']
答: 暂无答案
评论
email
str
 
msg['From'] = str(email)+' '
From:
 
msg['From'] = str(email)+''