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

时间:2009-02-18 10:00:49

标签: email sendmail

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

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

我更愿意使用Perl发送电子邮件。

7 个答案:

答案 0 :(得分:3)

调用/usr/lib/sendmail通常是首选方法,因为它可以正确处理传递问题。此表示使用sendmail。大多数(全部?)邮件传输系统提供的命令只是名为 sendmail,并提供与原始版本兼容的接口。

或者,您可以使用Net :: SMTP等软件包直接通过SMTP中继发送,但要确保正确地解决传送问题。

答案 1 :(得分:2)

Sendmail不是唯一的选择。你可以使用Postfix,Qmail和许多其他的

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

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

答案 2 :(得分:2)

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

TJ Luoma在TUAW

上做了很好的写作

答案 3 :(得分:1)

我发现nullmailer是一个非常有用的解决方案。 Nullmailer是一个sendmail / qmail / etc替换MTA,它转发给一组固定的邮件服务器。配置非常简单,消耗的资源很少。

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

http://untroubled.org/nullmailer/

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:-1)

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