2011-07-20 7 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); 

質問は、私はこれを行うには、スレッドをフォークする必要があります、ありますか?
'mail'コマンドが 'wait-till-sent'とは対照的に 'fire-and-forget'である場合、
私はこれに対して別のスレッドは必要ないと思います。

私はMTAにpostfixを使用しています。

答えて

2

通常はありません。 mailは、メール転送エージェントを起動し、メッセージを手渡し、バックグラウンドで実行させます。 sendwaitオプションが設定されている場合は、それが送信されるまで待機します。これはsendmailやpostfixのようなMTAを使用する場合と、SMTPを直接使用する場合(smtpオプションの影響下にある場合)の両方に適用されます。

したがって、sendwaitオプションが設定されているかどうかを知る必要があります。コマンドラインで設定しない場合は、.mailrcに設定するか、環境変数として設定できます。

詳細は、詳細を知りたい場合はmanページを参照してください。

+0

ありがとうございます! man page:GNU mailutilsのマニュアルは、ライセンス理由のためにDebianシステムでは利用できません.... http://www.gnu.org/software/mailutils/manual/index.htmlはあまりにも大きい文書です。私はどこで医者を見るか? – eugene

+0

それは変です。 FedoraにはGNUではなく、Heirloomのメールがあるので、マニュアルページがあります。私が持っているメールのバージョンのmanページは、[ここ](http://heirloom.sourceforge.net/mailx/mailx.1.html)です - ちょうど 'sendwait' –

関連する問題