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

发布于 2024-07-17 12:29:59 字数 248 浏览 12 评论 0原文

我需要在 delbian linux 中发送电子邮件。 如何发送? 我在 256 MB linux 机器上运行我的服务器,我听说 postfix 和 sendmail 太过分了。

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

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

使用ssmtp相对于python的smtplib有什么优势?

I need to send email in delbian linux. How to send? I run my server on 256 MB linux box and I heard postfix and sendmail is overkill.

Recently I came across the ssmtp, that seems to be an executable, needs to be executed as a process and called through python using os modules.

alternatively, python already provides smtplib which is working fine with me.

What is the advantage of using ssmtp over python's smtplib?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谜兔 2024-07-24 12:29:59

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

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

但是,在 Python 中情况相反:你有一个内置库,可以轻松地直接使用 SMTP,而使用 sendmail 要求您调用 subprocess 模块,该模块有点笨重,而且非常依赖于不属于 Python 的东西。 所以基本上没有理由不使用smtplib

In a Python program, there is no advantage.

The only purpose of ssmtp is to wrap the SMTP protocol in the sendmail API. That is, it provides a program /usr/sbin/sendmail that accepts the same options, arguments, and inputs as the full-blown sendmail (though most of the options do nothing); but behind the scenes, instead of processing the email itself, it sends the message to an SMTP server. This is for systems that need to have a sendmail program present, perhaps because they don't understand SMTP - for example, I think older versions of PHP had this requirement, and even in recent versions it might still be easier to configure PHP to use the so-called sendmail interface (i.e. the program sendmail) than to use SMTP directly. (I haven't used PHP in a little while, I'm not sure about the current status)

However, in Python the situation is reversed: you have a builtin library that makes it easy to use SMTP directly, whereas using sendmail requires you to invoke the subprocess module which is somewhat clunky and also very dependent on things that are not part of Python. So basically there is no reason not to use smtplib.

挖个坑埋了你 2024-07-24 12:29:59

此外,postfix 在“卫星”模式下安装非常简单,它所做的只是排队并为您发送电子邮件。 比实现您自己的电子邮件队列容易得多。 大多数像样的包管理系统都会让你以这种方式配置它。

Additionally, postfix is very easy to install in "satellite" mode, where all it does is queue and deliver email for you. Way easier than implementing your own email queue. Most decent package management systems will let you configure it this way.

捂风挽笑 2024-07-24 12:29:59

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

但 Postfix 对于 256 Mb 的机器来说就足够了。 像 Postfix 这样的完整 MTA 的好处是它可以保留消息并在目标服务器关闭时重试。 有了 smtplib 和远程计算机上的服务器,您的程序现在依赖于网络......

There are other lightweight SMTP senders, such as msmtp, the one I prefer.

But Postfix is fine for a 256 Mb machine. The good thing about a full MTA like Postfix is that it keeps the message and retries if the destination server is down. With smtplib and the server on a remote machine, you program now depends on the network...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文