当我尝试使用libquickmail发送电子邮件时,我收到错误

时间:2016-12-25 16:32:19

标签: c++ email smtp

当我尝试使用https://sourceforge.net/projects/libquickmail发送电子邮件时 我收到错误

  

无法解析SMTP服务器主机名。

#include "quickmail.h"
#pragma comment(lib, "libquickmaillight.dll.a")

int main()
{
    quickmail_initialize();
    quickmail mailobj = quickmail_create("LOGIN@yandex.ru", "libquickmail test e-mail");
    quickmail_set_body(mailobj, "This is a test e-mail.\nThis mail was sent using libquickmail.");

    const char *errmsg = quickmail_send(mailobj, "smtp.yandex.com", 465, "LOGIN@yandex.ru", "PASSWORD");
    if (errmsg != NULL) {
        fprintf(stderr, "Error sending e-mail: %s\n", errmsg);
    }

    quickmail_destroy(mailobj);
}

编译器是MSVC14 我做错了什么?

3 个答案:

答案 0 :(得分:0)

尝试使用 quickmail_send_secure 代替 quickmail_send

答案 1 :(得分:0)

首先,我看到您正在使用465端口,这可能意味着您要使用SSL加密。

要使用SSL加密,您需要使用quickmail_send_secure()。由于libquickmaillight不支持加密,因此您需要链接到libquickmail

您的错误Unable to resolve SMTP server host name表示DNS查找错误。确保命令提示符中的ping smtp.yandex.com在您的系统上可以使用。

full库和light库之间的区别还在于full库使用libcurl。有可能没有针对libquickmaillight进行构建也可能会解决您的DNS问题,因为libcurl可能更适合查找DNS内容(例如,当您使用IPv6时)。

答案 2 :(得分:0)

我有同样的问题。 visual Studio 2015企业。 WINDOWS中某个程序的解决方案是WSAStartup: WSAStartup函数启动进程使用Winsock DLL。 https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-wsastartup

在使用libquickmail之前:

    WSADATA data;
    WSAStartup(MAKEWORD(2, 2), &data);

.....

和 WSACleanup(); 最后