启动本地 SMTP 服务器
我打算通过邮件把客户的崩溃报告传给我。所以,我不能使用任何公共的SMTP服务器,因为把任何账户的密码和应用程序打包在一起是不可接受的。
因此,我需要通过我的应用程序直接发送邮件到目标邮件服务器。
我该怎么在Python中实现这个呢?(我在用Windows,所以sendmail
这个选项不行)
1 个回答
2
你可以直接使用标准库里的 smtplib
。
如果你想写代码给任何人发送邮件,这会有点麻烦,因为 smtplib
是以客户端和服务器的方式连接,而不是服务器之间的转发方式。
不过,如果你只需要给一个你自己控制的特定服务器发送邮件,那就简单多了。只需把你的服务器设置为 'mail.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()
顺便说一下,如果你刚开始做崩溃报告收集器,可能会考虑使用网络服务,而不是邮件地址。因为你会遇到一些问题,比如有些人无法通过公司防火墙/代理访问 25 端口,或者需要写代码从收件箱提取崩溃报告(或者通过 IMAP、mbox 等方式搜索),还要处理那些找到 crash-reports@example.com
的垃圾邮件发送者,他们会发900封关于伟哥的邮件,结果真正的崩溃报告反而淹没在里面等等。