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

I get error when i'm trying to send email using libquickmail

本文关键字:电子邮件 错误 libquickmail      更新时间:2023-10-16

当我尝试使用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: %sn", errmsg);
    }
    quickmail_destroy(mailobj);
}

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

尝试使用 QuickMail_send_secure 而不是 QuickMail_Send

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

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

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

也是完整库和光库之间的差异是完整库使用libcurl。没有构建libquickmaillight的机会也可能解决您的DNS问题,因为LibCurl可能会更好地查找DNS的东西(例如,当您使用IPv6时)。

我也有同样的问题。Visual Studio 2015 Enterprise。Windows中程序的解决方案是WSASTARTUP:WSASTARTUP函数启动了通过一个过程对Winsock DLL的使用。https://learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-winsock-wsastartup

在使用libquickmail之前:

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

.....

和wsacleanup();最后