是“在linux中的邮件命令”即发即弃或等待直到邮件发送?

时间:2011-07-20 13:12:25

标签: linux multithreading email postfix-mta

我正在尝试使用以下代码从我的应用程序服务器发送邮件

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

问题是,我是否需要分叉线程来执行此操作? 如果'mail'命令是'fire-and-forget'反对'wait-till-sent',则 我想我不需要一个单独的线程。

我正在为MTA使用postfix。

1 个答案:

答案 0 :(得分:2)

通常不会。 mail将启动邮件传输代理,将邮件传递给后台,并让它在后台运行。如果您设置了sendwait选项,它将等待它被发送。这适用于使用MTA(如sendmail或postfix)以及直接使用SMTP时(在smtp选项的影响下)。

因此,您需要知道是否设置了sendwait选项 - 如果您未在命令行上设置它,则可以在.mailrc中设置,或者将其设置为环境变量。

如果您想了解更多信息,请在手册页中详细描述所有这些内容。