如何在python ssmtp vs smtplib中发送邮件

时间:2009-04-19 03:24:34

标签: python smtplib ssmtp

我需要在delbian linux中发送电子邮件。如何发送?我在256 MB的Linux机器上运行我的服务器,我听说postfix和sendmail有点矫枉过正。

最近我遇到了ssmtp,它似乎是一个可执行文件,需要作为一个进程执行,并使用os模块通过python调用。

或者,python已经提供了smtplib,它对我来说很好。

使用ssmtp优于python的smtplib有什么好处?

3 个答案:

答案 0 :(得分:5)

在Python程序中,没有任何优势。

ssmtp的唯一目的是将SMTP协议包装在sendmail API中。也就是说,它提供了一个程序/usr/sbin/sendmail,它接受​​与完整的sendmail相同的选项,参数和输入(尽管大多数选项什么都不做);但在幕后,它不是处理电子邮件本身,而是将邮件发送到SMTP服务器。这适用于需要有sendmail程序的系统,可能是因为他们不了解SMTP - 例如,我认为旧版本的PHP有这个要求,即使在最近的版本中,它仍然可能更容易配置PHP使用所谓的sendmail接口(即程序sendmail)而不是直接使用SMTP。 (我有一段时间没用过PHP,我不确定当前的状态)

然而,在Python中情况正好相反:你有一个内置库,可以直接使用SMTP,而使用sendmail需要你调用subprocess模块,这个模块有些笨重,而且非常依赖于不属于Python的东西。所以基本上没有理由不使用smtplib

答案 1 :(得分:2)

此外, postfix 非常容易在“卫星”模式下安装,它所做的就是排队并为您发送电子邮件。比实现自己的电子邮件队列更容易。最体面的包管理系统将允许您以这种方式配置它。

答案 2 :(得分:1)

还有其他轻量级SMTP发件人,例如我最喜欢的msmtp

但Postfix适用于256 Mb机器。像Postfix这样的完整MTA的好处在于,如果目标服务器关闭,它会保留消息并重试。使用smtplib和远程计算机上的服务器,您现在的程序取决于网络......