我正在尝试使用以下代码从我的应用程序服务器发送邮件
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。
答案 0 :(得分:2)
通常不会。 mail
将启动邮件传输代理,将邮件传递给后台,并让它在后台运行。如果您设置了sendwait
选项,它将等待它被发送。这适用于使用MTA(如sendmail或postfix)以及直接使用SMTP时(在smtp
选项的影响下)。
因此,您需要知道是否设置了sendwait
选项 - 如果您未在命令行上设置它,则可以在.mailrc
中设置,或者将其设置为环境变量。
如果您想了解更多信息,请在手册页中详细描述所有这些内容。