gpt4 book ai didi

python - 使用 python smtplib 发送电子邮件不起作用,对 "from"字段感到困惑

转载 作者:太空狗 更新时间:2023-10-29 22:23:35 24 4
gpt4 key购买 nike

我正在尝试用 python 发送电子邮件。这是我的代码。

import smtplib

if __name__ == '__main__':
SERVER = "localhost"

FROM = "sender@example.com"
TO = ["wmh1993@gmail.com"] # must be a list

SUBJECT = "Hello!"

TEXT = "This message was sent with Python's smtplib."

# Prepare actual message

message = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

# Send the mail

server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO[0], message)
server.quit()
print "Message sent!"

这运行没有错误,但没有电子邮件发送到 wmh1993@gmail.com

问题

有一件事我不明白这段代码——设置FROM字段时我有什么限制?

我是否必须以某种方式说它来 self 的计算机?

有什么措施可以防止我欺骗他人的电子邮件?

或者我可以自由地这样做吗?

最佳答案

This runs without error, but no email is sent to wmh1993@gmail.com.

这通常意味着,邮件已传输到“localhost”上的 MTA(邮件服务器),但该服务器无法将其转发到 gmail。它可能试图向“sender@example.com”发送退回邮件,但也失败了。或者它成功发送了邮件,但它落入了 gmail 的垃圾邮件文件夹(该邮件可能会触发垃圾邮件规则,因为它缺少日期标题)

One thing I don't understand about this code --- what restrictions do I have when setting the FROM field?

它必须是语法上有效的电子邮件地址

Do I somehow have to say that it was from my computer?

没有。但这可能是它未交付的问题。您的计算机是在家庭/动态/拨号 IP 上吗? gmail(以及许多其他提供商)不接受来自此类 IP 的邮件。您的邮件服务器的 HELO 可能有误,DNS 设置可能不正确等。您需要检查服务器日志。您可能必须将本地邮件服务器配置为通过智能主机中继邮件,而不是尝试直接联系目标服务器。

What is in place to prevent me from spoofing someone else's email?

不多,这就是为什么我们有这么多来自伪造地址的垃圾邮件。 SPF/DKIM 之类的东西可以提供一些帮助,但 SMTP 协议(protocol)本身不提供防止欺骗的保护。

Or am I at liberty to do that?

技术上是的。

关于python - 使用 python smtplib 发送电子邮件不起作用,对 "from"字段感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8440446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com