启动本地SMTP服务器

时间:2013-01-31 21:43:37

标签: python windows smtp

我将通过邮件机制将客户端的故障转储转移给我。因此,我无法使用任何公共SMTP服务器,因为使用该应用程序打包任何帐户的凭据是不可接受的。

因此,我需要通过我的应用程序将邮件直接发送到目标邮件服务器。

如何在python中实现这一目标? (我正在使用Windows,因此sendmail不是一个选项)

1 个答案:

答案 0 :(得分:2)

只需在标准库中使用smtplib

尝试编写可以向任何人发送邮件的代码是有问题的,因为smtplib连接到服务器客户端到服务器样式而不是服务器到服务器中继样式。

但是如果您只需要将邮件发送到您控制的某个特定服务器,那就太简单了。只需在'mail.example.com'配置您的服务器即可接受来自'crash-reports@example.com'的任何邮件到'crash-reports@example.com'。

您的代码将如下所示:

import smtplib
addr = 'crash-reports@example.com'
def send_crash_report(crash_report):
    msg = ('From: {}\r\nTo: {}\r\n\r\n{}'.format(
           addr, addr, crash_report)
    server = smtplib.SMTP('mail.example.com')
    server.sendmail(addr, [addr], msg)
    server.quit()

作为旁注,如果您刚开始使用崩溃报告收集器,则可能需要考虑使用Web服务而不是邮件地址。您将遇到无法通过公司防火墙/代理访问端口25,编写从收件箱中提取崩溃报告的代码(和/或通过IMAP或mbox或其他搜索)的问题,处理垃圾邮件发送者问题谁以某种方式找到crash-reports@example.com,并为每个实际崩溃报告等提供900条关于Cialis的消息。