Python向基于域的电子邮件发送消息

Python向基于域的电子邮件发送消息,python,email,smtp,Python,Email,Smtp,试图通过gmail使用python的smtplib发送电子邮件: import smtplib msg = "\r\n".join([ "From: " + email_host, "To: " + email_recipient, "Subject: subject", "", email_msg ]) server = smtplib.SMTP('smtp.gmail.com:587') server.ehlo() server.starttls()

试图通过gmail使用python的smtplib发送电子邮件:

import smtplib

msg = "\r\n".join([
    "From: " + email_host,
    "To: " + email_recipient,
    "Subject: subject",
    "",
    email_msg
])
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.login(email_host, email_pwd)
server.sendmail(email_host, email_recipient, msg)
server.quit()
对于yandex、yahoo和gmail等流行服务来说,它工作得非常完美。但不可能向基于域的电子邮件发送消息(login@some_domain.com).


有什么问题吗?

电子邮件服务应用限制,因为在您发送这些电子邮件时没有身份验证

例如。

此SMTP服务器不需要TLS或身份验证。它是 限制,因为电子邮件只能发送到其他Gmail地址或 谷歌应用程序用户——因此,它可能只适用于内部测试 使用Gmail或Google应用程序的内部网络。限制适用于每个 接受者


也就是说,这些服务不介意在自己的域内发送电子邮件,但不希望恶意用户发送到其他域。

好吧,在搜索答案时,我发现谷歌邮件服务不允许通过587 SMTP端口向基于域的电子邮件发送邮件,因为它需要使用TLS


我决定切换到465 SMTP端口,正如在文章中所说的,所以它现在工作得很好!此外,出于测试目的,我使用了另一个邮件服务(Yandex),它只支持465个SMTP端口,也可以工作。

问题是我无法通过SMTP gmail向基于域的电子邮件发送邮件。如何找到解决方案?取决于服务,但例如,如果您想使用他们的SMTP服务器,gmail将需要身份验证:。即:“身份验证需要完整的Gmail或G套件电子邮件地址”和“允许使用端口465(需要SSL)端口587(需要TLS)动态IP”