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

时间:2018-11-15 12:13:05

标签: 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()
server.login(email_host, email_pwd)
server.sendmail(email_host, email_recipient, msg)
server.quit()

对于yandex,yahoo和gmail等受欢迎的服务,它可以完美运行。但是,无法将邮件发送到基于域的电子邮件(login@some_domain.com)。

出什么问题了?

2 个答案:

答案 0 :(得分:0)

电子邮件服务会受到限制,因为发送这些电子邮件时没有身份验证。

例如 https://support.asperasoft.com/hc/en-us/articles/216128488-How-to-use-Gmail-as-an-SMTP-relay-for-notification-testing

  

此SMTP服务器不需要TLS或身份验证。它是   受限制,因为电子邮件只能发送到其他Gmail地址或   Google Apps用户-因此,只有在以下情况下进行测试才有意义   使用Gmail或Google应用程序的内部网络。限制适用于   收件人。

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

答案 1 :(得分:0)

好吧,在寻找答案时,我发现Google Mail服务不允许通过587 SMTP端口将邮件发送到基于域的电子邮件,因为它需要使用TLS。

enter image description here

我决定按照this帖子中所述切换到465 SMTP端口,因此现在可以正常使用了!另外,出于测试目的,我使用了另一个邮件服务(Yandex),该服务仅支持465 SMTP端口-也可以正常工作。