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

时间:2012-02-16 18:54:46

标签: c++ c linux email gmail

我希望每次模拟结束时都会向我的Gmail帐户发送一封电子邮件。我试过在网上搜索并发现sendEmail,但它已超时。如果有人能指出我试过的包裹或链接,我会很感激。

由于

5 个答案:

答案 0 :(得分:22)

您可以使用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)
{
    int i;

    printf("argc = %d\n", argc);

    for (i = 0; i < argc; i++)
        printf("argv[%d] = \"%s\"\n", i, argv[i]);
    sendmail(argv[1], argv[2], argv[3], argv[4]);
}

答案 1 :(得分:4)

libESMTP似乎就是你要找的东西。它的记录很好,似乎也在积极开发中(最新的候选版本是从2012年1月中旬开始)。它还支持SSL和各种身份验证协议。

源包中有示例应用程序。

答案 2 :(得分:2)

VMimelibcurl都是发送电子邮件的好图书馆(等等)。

答案 3 :(得分:1)

我喜欢上面的trojanfoe的答案,但在我的情况下,我需要打开一个电子邮件发送代理..一个MTA,以使Linux能够发送电子邮件 - 我发现exim4是一个相对简单的MTA才能开始工作trojanfoe的程序非常适合它。

让它工作我用(在虚拟盒子中的debian类型系统(crunchbang linux))

  

sudo apt-get install exim

     

sudo apt-get install mailutils

我用

配置了exim4
  

sudo dpkg-reconfigure exim4-config

我告诉计算机我的正常(远程)电子邮件地址

  

sudo emacs / etc / email-addresses

希望这可能有用,因为这些是我发现的工作,以使我的linux系统发送电子邮件上面的trojanfoe的电子邮件程序

答案 4 :(得分:1)

执行fork exec并将正文传递给sendmail / mail这样的程序:

function processNode(node)
{
    collapseNode(myNode); //logic for current node
    (treeData.children || []).forEach( function( chidNode ){
       processNode( chidNode ); //if there are children invoke the same method for each child node
    });
}
processNode( treeData ); //invoke for your treeData