2011-07-20 66 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' –

相关问题