我正在尝试在只与Linux兼容的C程序中发送电子邮件。我可以使用sendmail来执行此操作,因为我不需要阅读/接收任何消息,只需每隔几分钟发送一封电子邮件。
FILE *email = popen("/usr/lib/sendmail -t", "w");
if (email != NULL) {
fprintf(email, "To: ygvojpqa@guerrillamail.com\r\n");
fprintf(email, "From: noreply@mydomain.tld\r\n");
fprintf(email, "Subject: Alert\r\n");
fprintf(email, "MIME-Version: 1.0\r\n");
fprintf(email, "Content-Type: text/plain\r\n\r\n");
fprintf(email, "A fault occured.\r\n");
if(pclose(email) < 0) {
std::cout << "pclose fail\n";
return 1;
}
} else {
std::cout << "popen fail\n";
return 1;
}
return 0;
只要有互联网连接且没有错误,此代码就可以正常工作。但是,我找不到一种方法来查看电子邮件是否真正通过并成功发送。例如:我拔掉我的互联网并运行上面的代码片段,在popen或pclose上没有错误,看起来它运行正常,但当然我没有得到它,因为我没有互联网。
我想知道是否有一种方法,在我发送没有错误的电子邮件后,我可以在linux盒子上查看一些东西,看看消息是否通过。如果有帮助,我使用exim4作为我的MTA。我还查看了exim4邮件队列mailq
,但它没有记录有关所发送电子邮件的任何状态。它记录的唯一错误是TO电子邮件无效并冻结它。但是当没有互联网时,没有代码说它没有通过。
有什么想法吗?