如何不通过身份验证直接将邮件发送到SMTP服务器?
我想通过直接连接到将电子邮件直接从脚本发送到Gmail电子邮件帐户smtp.gmail.com
。
但是,我不希望脚本中没有gmail密码。据我了解,Gmail似乎需要进行身份验证,才能传递任何邮件,包括发送给自己的用户。
我的问题是,来自另一个SMTP服务器的邮件是如何传递的,因为该SMTP服务器将没有Gmail凭据。Gmail是否只需要对“ 匿名
”发件人进行身份验证,并且由于我的脚本是在个人计算机上运行的,因此它具有更高的安全性吗?这是我正在运行的python脚本:
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)
当我运行此脚本时,输出为:
(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记录等?
-
您可以使用某些未经身份验证的外部SMTP服务器(或本地SMTP),但是发送的邮件将被Google的垃圾邮件过滤器捕获,因为 msg [“
From”] 是 @ google.com ,而实际的SMTP不是 smtp.gmail .com 。这些SMTP服务器还必须在ISP的DNS中具有正确的反向区域,否则此smtp将被google阻止。