从 linux 中的 C/C 程序发送电子邮件

新手上路,请多包涵

每次模拟结束时,我都想向我的 gmail 帐户发送一封电子邮件。我尝试在网上搜索并找到 sendEmail 但它超时了。如果有人能指出他们尝试过的包裹或链接,我将不胜感激。

谢谢

原文由 Madagascar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 505
2 个回答

您可以使用 popen() 直接调用本地 MTA,并将其提供符合 RFC822 的文本。

 #include <stdio.h>
#include <string.h>
#include <errno.h>
int sendmail(const char *to, const char *from, const char *subject, const char *message)
{
    int retval = -1;
    FILE *mailpipe = popen("/usr/lib/sendmail -t", "w");
    if (mailpipe != NULL) {
        fprintf(mailpipe, "To: %s\n", to);
        fprintf(mailpipe, "From: %s\n", from);
        fprintf(mailpipe, "Subject: %s\n\n", subject);
        fwrite(message, 1, strlen(message), mailpipe);
        fwrite(".\n", 1, 2, mailpipe);
        pclose(mailpipe);
        retval = 0;
     }
     else {
         perror("Failed to invoke sendmail");
     }
     return retval;
}

main(int argc, char** argv)
{
    if (argc == 5) {
        sendmail(argv[1], argv[2], argv[3], argv[4]);
    }
}

原文由 trojanfoe 发布,翻译遵循 CC BY-SA 4.0 许可协议

libESMTP 似乎是您正在寻找的。它有很好的文档记录,似乎也在积极开发中(最后一个候选版本是从 2012 年 1 月中旬开始的)。它还支持 SSL 和各种身份验证协议。

源包中有示例应用程序。

原文由 jupp0r 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题