python - 从Python发送邮件而不使用第三方SMTP ("direct-to-MX")

标签 python email smtp mail-server

是否可以直接从我的计算机向 Hotmail 或 Gmail(或任何其他)收件人发送电子邮件,无需连接到第三方发送服务器 (SMTP)?

即如果收件人是[email protected],我的电脑是否可以直接连接到gmail.com等

我尝试过这个:

import smtplib

def mailsend(FROM, TO, SUBJECT, TEXT):
    message = "From: %s\nTo: %s\nSubject: %s\n%s" % (FROM, TO, SUBJECT, TEXT)
    server = smtplib.SMTP('localhost')
    server.sendmail(FROM, TO, message)
    server.quit()

mailsend("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="483c2d3b3c082d30292538242d662b2725" rel="noreferrer noopener nofollow">[email protected]</a>", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1e7b667f736e727b5e79737f7772307d7173" rel="noreferrer noopener nofollow">[email protected]</a>", "Hello", "First email")

但我明白了

Errno 10061 : No connection could be made because the target machine...

(原因可能是 localhost 没有任何电子邮件发送服务器,但我的问题是:是否可以在没有这样的电子邮件发送服务器的情况下发送电子邮件,而是直接发送到收件人的服务器?)

如何在 Python 中发送“直接发送到 MX”的邮件? ( as described here )

注释:

  • 我从 Windows 运行它,我没有本地 SMTP/Sendmail/Postfix。

  • 我知道这样做通常是一个坏主意(收件人很可能会拒绝我发送的电子邮件,因为我没有任何 DKIM、SPF 等),而且我确实知道这是一个运行一个高投递率的邮件服务器是一项非常艰巨的任务,但我只是想知道从技术上讲是否可能

最佳答案

如果您使用收件人域的 MX 而不是 'localhost',您的代码在技术上将“有效”。

但是:你不应该这样做!发送电子邮件涉及的不仅仅是一个 SMTP 连接。使用互联网提供商的 smtp 中继或类似服务器 - 其他一切都是一个非常糟糕的主意。

代码是相同的,但您将为每个连接使用您自己的 mx,而不是 'localhost' 或收件人的 mx。

顺便说一句:主题 header 后面缺少一个额外的 \n(换行符)。

关于python - 从Python发送邮件而不使用第三方SMTP ("direct-to-MX"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48169101/

相关文章:

python - 在没有 Django REST 框架的情况下将 Swagger 文档添加到 Django

python - Spark - 操作数据框中的特定列值(删除字符)

python - R中大文件的数据格式是什么?

c# - 作为内联 C# 添加页眉和页脚到电子邮件

python - 使用索引列表从 2d 数组获取 1d numpy 数组

linux - CentOS PostFix 让我连接,不会打招呼

python - 在python中使用google SMTP发送电子邮件

google-app-engine - 如何从 Google App Engine 向随机的非应用管理员发件人发送电子邮件?

Python SMTP 错误号 10060

php - 使用 php 和 smtp 进行电子邮件验证