2011-07-20 65 views
3

我想從我的應用程序服務器發送郵件使用下面的代碼是「linux中的郵件命令」,即發即忘或等待郵件發送?

FILE *mailer = popen("/usr/bin/mail -s 'Some subject here' [email protected]", "w"); 
fprintf(mailer, "Hello %s,\nThis note is to inform you that your job completed successfully.\n", username); 
pclose(mailer); 

的問題是,我需要到餐桌一個線程來做到這一點?
如果'郵件'命令是'發射並忘記'反對'等待發送',
我想我不需要一個單獨的線程。

我正在使用postfix for MTA。

回答

2

通常不會。 mail將啓動郵件傳輸代理,將它傳遞給消息,並讓它在後臺運行。如果您設置了sendwait選項,它將等待它被髮送。這適用於使用MTA(如sendmail或postfix)以及直接使用SMTP(在smtp選項的影響下)。

因此,您需要知道是否設置了sendwait選項 - 如果您未將其設置在命令行上,則可以將其設置爲.mailrc或設置爲環境變量。

如果您想了解更多信息,請在手冊頁中稍微詳細地介紹所有這些內容。

+0

謝謝! man page說:完整的gnu mailutils手冊在debian系統中由於授權原因不可用。http://www.gnu.org/software/mailutils/manual/index.html太大doc,你能指出我在哪裏看文檔? – eugene

+0

這很奇怪。 Fedora有Heirloom郵件而不是GNU,因此它有手冊頁。我的郵件版本的手冊頁是[here](http://heirloom.sourceforge.net/mailx/mailx.1.html) - 只需查找'sendwait' –

相關問題