是“linux 中的邮件命令”一劳永逸还是等到邮件发送?

发布于 2024-11-25 12:00:45 字数 369 浏览 3 评论 0原文

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

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);

问题是,我需要分叉一个线程来执行此操作吗?
如果“邮件”命令是“即发即弃”而不是“等待发送”,
我想我不需要为此单独的线程。

我正在使用 MTA 的 postfix。

I'm trying to send mail from my application server using the following code

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);

Question is, would I need to fork a thread to do this?
if the 'mail' command is 'fire-and-forget' opposed to 'wait-till-sent',
I guess I don't need a separate thread for this.

I'm using postfix for MTA.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流年里的时光 2024-12-02 12:00:45

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

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

如果您想了解更多信息,所有这些都在手册页中进行了更详细的描述。

Not usually. mail will start a mail transfer agent, hand it the message, and let it run in the background. If you have the sendwait option set, it will wait for it to be sent. That applies both when using an MTA, like sendmail or postfix, and when using SMTP directly (under the influence of the smtp option).

So, you need to know if the sendwait option is set - if you're not setting it on the command line, then it could be set in .mailrc, or as an environment variable.

All this is described in marginally more detail in the man page, if you want to know more.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文