How to send a mail directly to SMTP server without authentication?(如何在没有身份验证的情况下直接向 SMTP 服务器发送邮件?)
问题描述
我想通过直接连接到 smtp.gmail.com
直接从脚本向 Gmail 电子邮件帐户发送电子邮件.
I would like to send an email directly from a script to a Gmail email account, by connecting directly to smtp.gmail.com
.
但是,我不希望脚本中包含 gmail 密码.根据我的阅读,Gmail 似乎需要验证才能发送任何邮件,包括发送给自己的用户.
However, I would prefer not to have the gmail password in the script. From what I have read, it appears that Gmail requires authentication before it will deliver any mail, including to its own users.
我的问题是,来自另一台 SMTP 服务器的邮件是如何传递的,因为该 SMTP 服务器没有 Gmail 凭据.Gmail 是否只需要对匿名"发件人进行身份验证,并且由于我的脚本在个人计算机上运行,因此需要更高的安全性?这是我正在运行的 python 脚本:
My question is, how is mail coming from another SMTP server ever delivered, since that SMTP server will not have Gmail credentials. Does Gmail only require authentication for "anonymous" senders, and since my script is running on a personal computer, it is subject to higher security? Here is the python script I am running:
import smtplib
import email
msg = email.message.Message()
msg["From"] = "user@gmail.com"
msg["To"] = "user@gmail.com"
msg["Subject"] = "Test message"
server = smtplib.SMTP("smtp.gmail.com",587)
server.starttls()
server.ehlo_or_helo_if_needed()
try:
failed = server.sendmail("user@gmail.com","user@gmail.com", msg.as_string())
server.close()
except Exception as e:
print(e)
当我运行这个脚本时,输出是:
When I run this script, the output is:
(530, b'5.5.1 Authentication Required. Learn more at
5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 fw5sm21125889wib.0', 'user@gmail.com')
我的问题是,外部 SMTP 服务器如何避免这个问题?他们所做的一切是否可以在本地脚本中复制,还是需要正确的反向 DNS 记录、SPF 记录等?
My question is, how do external SMTP servers avoid this problem? And is whatever they do replicable in a local script, or does it require correct reverse DNS records, SPF records, etc.?
推荐答案
你可以使用一些无需认证的外部 SMTP 服务器(或本地 SMTP),但是发送的邮件会被 Google 的垃圾邮件过滤器捕获,因为 msg["From"] 是 @google.com,而实际的 SMTP 不是 smtp.gmail.com.
You can use some external SMTP servers without authentication (or a local SMTP), but the sent message will be caught by Google's spam filter because the msg["From"] is @google.com, while the actual SMTP is not smtp.gmail.com.
那些 SMTP 服务器也必须在 ISP 的 DNS 中有正确的反向区域,否则这个 smtp 将被 google 阻止.
Those SMTP servers also must have correct reverse zone in ISP's DNS and otherwise this smtp will be blocked by google.
这篇关于如何在没有身份验证的情况下直接向 SMTP 服务器发送邮件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在没有身份验证的情况下直接向 SMTP 服务器发送邮件?


基础教程推荐
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 筛选NumPy数组 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01