我将通过邮件机制将故障转储从客户端传输给我。因此,我不能使用任何公共 SMTP 服务器,因为将任何帐户的凭据与应用程序打包在一起是不可接受的。
因此,我需要通过我的应用程序将邮件直接发送到目标邮件服务器。
我怎样才能在python中实现这一点?(我使用的是 Windows,所以sendmail
不是一个选项)
只需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 的消息充斥它。