2009-02-18 66 views

回答

2

Sendmail不是唯一的選擇。你可以使用Postfix,Qmail和許多其他的

我的Perl腳本調用mailx命令。要知道如何使用它,請鍵入'man mailx' 但是,這需要配置MTA correclty。

或者,你可以使用Net :: SMTP Perl庫,並使用選擇

-1

我知道你說的Perl,但我用過的最簡單的跨平臺電子郵件發送庫是python的smtplib。當然值得一看。

3

調用/usr/lib/sendmail通常是首選方法,因爲它可以正確處理傳遞問題。這意味着使用sendmail。大多數(所有?)郵件傳輸系統提供的命令只是,命名爲sendmail,並提供了與原始兼容的界面。

或者,您可以使用類似Net :: SMTP的包直接通過SMTP中繼發送,但要特別確保正確處理傳送問題。

0

如果您的組織中已經有其他郵件服務器正在運行,那麼您在發送的計算機上不需要郵件傳輸代理(MTA)實例:您可以讓Perl通過SMTP將電子郵件發送到該服務器,因此不需要在另一臺機器上安裝sendmail等MTA。

+0

不好意見!一個本地mta後臺處理消息,處理錯誤,在出現問題時重試交付。所有這一切你的應用程序必須自己做,如果它談到smtp到遠程服務器。 – hop 2009-02-18 10:48:14

+1

我不同意:當地的MTA需要管理。如果沒有正確完成,這隻會刷下地毯下的任何問題。我發現傳遞給智能主機沒有任何問題。如果智能主機出現問題,則只需在Perl方面進行最小限度的干預/錯誤處理。 – ShiDoiSi 2009-02-18 12:54:40

+0

沒有工作(傳出)mta的unix系統無論如何都不是正確配置的unix系統!它不僅僅是你想發送電子郵件的小應用程序:還有各種各樣的依賴它的cron作業等等。在大多數Linux發行版中,您甚至不能在沒有--force的情況下卸載mta。 – hop 2009-02-18 17:43:18

2

我用msmtp成功的SMTP服務器,即它支持很大認證

TJ駱馬湖做了它一個很好的書面記錄上TUAW

0

我喜歡創建一個Gmail或其他免費帳戶,然後使用J2EE中的Java郵件API來發送消息(從您的新Gmail帳戶)誰...通常我會創建一個梅勒類它可以使用默認的構造函數構造,然後給它一個send(String dest ,String subj,String body [,Obj attach ...如果你想要]),然後在你的情況下,你可能會把這個東西包裝在一個main方法中,這樣你就可以用別的命令行參數來調用它,或者從內部調用一些java程序。如果你有興趣,我會爲你拍攝代碼。

1

我發現nullmailer對於描述的場景非常有用的解決方案。 Nullmailer是一個sendmail/qmail/etc替代MTA,可以轉發到一組固定的郵件服務器。配置和消耗很少的資源非常簡單。

nullmailer與其他提到的解決方案(如mstmp和ssmtp)相比的一個重要優勢在於它維護了要發送的電子郵件隊列。發送郵件的應用程序在郵件排隊時(毫秒)僅在很短的時間內被阻止。發送郵件發生在另一個進程的上下文中。 像mstmp和ssmtp這樣的解決方案不會維護郵件隊列。發送發生在應用程序的上下文中,從而阻止應用程序。以這種方式發送電子郵件可以很容易地花費1到2秒或更長的時間。這在許多情況下可能不成問題,但如果電子郵件是由Web應用程序發送的,則可能會成爲問題。

http://untroubled.org/nullmailer/

相關問題