让前端飞Web前端之路程序员

闲聊c/c++: vs2015编译libquickmail C语

2017-08-30  本文已影响175人  随风而行之青衫磊落险峰行
腾讯邮件测试.jpg

续:
本篇目的:

  1. 引入curlSDK给libquickmail进行编译(下篇)

  2. 配置腾讯qq邮箱,获取access token,用于smpts发送邮件

  3. 编写测试代码测试libquickmail

  4. 简单了解一下源码,知道libquickmail中是如何调用curl进行邮件发送的

引入curlSDK给libquickmail进行编译:

项目结构.png

其中quickmail.h/c文件是来源于libquickmail库,由于我们使用了自己编译的curlSDK包,因此只需要这两个文件就能编译

SendEmail.h/cpp实现了
一个结构:EMail

struct EMail
{
    const char* from;
    const char* to;
    const char* cc;
    const char* bcc;
    const char* subject;
    const char* body;
    const char* attachmentFile;

    EMail() : from(0),to(0),cc(0),bcc(0),subject(0),body(0),attachmentFile(0)
    {}
};

为了简单测试使用,去掉了群发等功能

一个函数: bool SendFromQQMail(const EMail& mail);
代码后面看一下。

设置预编译宏.png 链接两库.png

配置腾讯邮箱,获取授权码:

腾讯邮箱配置.png

编写代码进行测试:

bool SendFromQQMail(const EMail& email)
{
    //最起码要有发送者和接收者
    if (email.from == NULL)
        return false;

    if (email.to == NULL)
        return false;

    int ret = -1;
    quickmail mailobj = NULL;

    ret = quickmail_initialize();
    if (ret)
        return false;

    mailobj = quickmail_create(NULL, NULL);
    if (!mailobj)
        return false;

    quickmail_set_from(mailobj, email.from);
    quickmail_add_to(mailobj, email.to);

    if (email.subject)
        quickmail_set_subject(mailobj, email.subject);

    if (email.cc)
        quickmail_add_cc(mailobj, email.cc);

    if (email.bcc)
        quickmail_add_bcc(mailobj, email.bcc);

    if (email.body)
        quickmail_set_body(mailobj, email.body);

    if (email.attachmentFile)
        quickmail_add_attachment_file(mailobj, email.attachmentFile,NULL);

    const char* errMsg = quickmail_send_secure(mailobj, "smtp.qq.com", 465, "47178234@qq.com", "你的授权码填在这里");
    if (errMsg)
    {
        printf("%s\n", errMsg);
        quickmail_destroy(mailobj);
        quickmail_cleanup();
        return false;
    }
    else
    {
        quickmail_destroy(mailobj);
        quickmail_cleanup();
        return true;
    }
    
}

直接F5,立马从你的邮箱发送一份邮件,还是到你自己的邮箱(你可以修改成其他人的邮箱)

关于如何调用curl,请自行查看curl相关代码

其实内容有点多,如想更清楚了解实现,请看如下视频:
编译libquickmail并配置腾讯邮箱发送邮件

上一篇 下一篇

猜你喜欢

热点阅读