Email 以编程方式从linux服务器发送电子邮件

Email 以编程方式从linux服务器发送电子邮件,email,sendmail,Email,Sendmail,我想从linux服务器发送一次性电子邮件。服务器不需要接收回电子邮件 是否有比sendmail更简单的解决方案仅用于发送传出电子邮件 我更喜欢使用Perl来发送电子邮件。我知道你说的是Perl,但我使用过的最简单的跨平台电子邮件发送库是python的。当然值得一看。呼叫/usr/lib/sendmail通常是首选方法,因为它可以正确处理交付问题。这并不意味着使用。大多数(全部?)邮件传输系统提供了一个名为sendmail的命令,并提供了一个与原始系统兼容的接口 或者,您可以使用诸如Net::SM

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

是否有比sendmail更简单的解决方案仅用于发送传出电子邮件


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

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

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


或者,您可以使用诸如Net::SMTP之类的软件包直接通过SMTP中继发送邮件,但要特别确保能够正确处理传递问题。

您不需要邮件传输代理(MTA)如果您的组织中已经运行了另一个邮件服务器,则在计算机上执行发送的实例:您可以让Perl通过SMTP将电子邮件发送到该服务器,因此无需在“您的”计算机上安装(另一个)类似sendmail的MTA。

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

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

或者,您可以使用Net::SMTP perl库并使用我成功使用的SMTP服务器,即它支持出色的身份验证


TJ Luoma在

上写得很好,我喜欢创建一个gmail或其他免费帐户,然后使用J2EE中的java mail api(从你的新gmail帐户)向任何人发送消息。。。通常我会创建一个Mailer类,它可以用默认构造函数构造,然后给它一个send(String dest、String subc、String body[、Obj attach…如果你愿意的话),然后在你的例子中,你可以把它包装在一个main方法中,这样你就可以用一些命令行参数从其他地方调用它,或者从一些java程序中调用它。如果您感兴趣,我将向您介绍代码。

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

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


糟糕的建议!本地mta对邮件进行假脱机处理,处理错误,并在出现问题时重试传递。如果您的应用程序与远程服务器进行smtp通信,则所有这些都必须自行完成。我不同意:本地MTA需要管理。如果做得不好,这只会掩盖任何问题。我看不出向smarthost传送数据有什么问题。如果smarthost有问题,您只需要在Perl端进行最少的干预/错误处理。没有工作(传出)mta的unix系统无论如何都不是正确配置的unix系统!不仅仅是您的小应用程序想要发送电子邮件:还有各种各样的cron作业等都依赖于它。在大多数linux发行版上,如果没有--force,您甚至无法卸载mta。此外,配置nullmailer只需要一个管理员地址条目和一个中继主机条目。即使在perl中,您的“最小”处理需要多少代码?检查/usr/lib/sendmail或perl库的退出代码没有区别,在这两种情况下都需要错误处理。对于这种应用程序,使用比postfix或qmail更简单的方法可能会更好。查看nullmailer、mstmp、ssmtp等。在unbuntu上安装nullmailer:(德语文章,但命令应该是任何人都能理解的)