【发布时间】:2012-04-03 13:00:28
【问题描述】:
我想通过直接连接到smtp.gmail.com,直接从脚本向 Gmail 电子邮件帐户发送电子邮件。
但是,我不希望脚本中包含 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 记录等?
【问题讨论】:
标签: python authentication smtp gmail