2

我想从 linux 服务器发送一封电子邮件。服务器不需要接收回电子邮件。

有没有比 sendmail 更简单的解决方案来仅发送外发电子邮件?

我更喜欢使用 Perl 来发送电子邮件。

4

7 回答 7

3

呼叫/usr/lib/sendmail通常是首选方法,因为它可以正确处理交付问题。这并不意味着使用sendmail。大多数(全部?)邮件传输系统都提供了一个刚刚命名 sendmail的命令,并提供了一个与原始系统兼容的接口。

或者,您可以使用 Net::SMTP 之类的包直接通过 SMTP 中继发送,但要特别确保正确解决交付问题。

于 2009-02-18T10:06:30.470 回答
2

Sendmail 不是唯一的选择。您可以使用 Postfix、Qmail 和许多其他工具

我的 Perl 脚本调用 mailx 命令。要知道如何使用它,请输入“man mailx” 但是这需要配置 MTA correclty。

或者您可以只使用 Net::SMTP perl 库并使用您选择的 smtp 服务器

于 2009-02-18T10:07:58.517 回答
2

我已经成功使用了msmtp,即它支持很好的身份验证

TJ Luoma 在TUAW上写了一篇不错的文章

于 2009-02-18T17:51:05.177 回答
1

对于所描述的场景,我发现 nullmailer 是一个非常有用的解决方案。Nullmailer 是 sendmail/qmail/etc 的替代 MTA,它中继到一组固定的邮件服务器。配置非常简单,占用资源少。

与其他提到的解决方案(如 mstmp 和 ssmtp)相比,nullmailer 的一个重要优势是它维护了要发送的电子邮件队列。在邮件排队时(毫秒),发送邮件的应用程序只会被阻塞很短的时间。邮件的发送发生在另一个进程的上下文中。mstmp 和 ssmtp 等解决方案不维护电子邮件队列。发送发生在应用程序的上下文中,从而阻塞了应用程序。以这种方式发送电子邮件很容易需要 1 到 2 秒或更长时间。在许多情况下这可能不是问题,但如果电子邮件是由 Web 应用程序发送的,则可能会成为问题。

http://untroubled.org/nullmailer/

于 2010-11-21T09:24:46.103 回答
0

如果您的组织中已经在运行另一个邮件服务器,则您不需要在进行发送的机器上使用邮件传输代理 (MTA) 实例:您可以让 Perl 通过 SMTP 将电子邮件传递到该服务器,因此无需拥有(另一个) MTA 就像“你的”机器上的 sendmail。

于 2009-02-18T10:07:29.503 回答
0

我喜欢创建一个 gmail 或其他免费帐户,然后使用 J2EE 中的 java 邮件 api 将消息(从您的新 gmail 帐户)发送给任何人......通常我会创建一个可以用一个构造的 Mailer 类默认构造函数,然后给它一个 send(String dest, String subj, String body[, Obj attach...if you want]) 然后在您的情况下,您可以将事物包装在 main 方法中,以便您可以从中调用它否则使用一些命令行参数,或者从一些java程序中调用。如果你有兴趣我会拍你的代码。

于 2009-02-18T17:58:23.007 回答
-1

我知道你说 perl,但我用过的最简单的跨平台电子邮件发送库是 python 的smtplib。当然值得一看。

于 2009-02-18T10:05:25.060 回答