【问题标题】:I get error when i'm trying to send email using libquickmail尝试使用 libquickmail 发送电子邮件时出现错误
【发布时间】:2016-12-25 16:32:19
【问题描述】:

当我尝试使用 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。
我做错了什么?

【问题讨论】:

  • 你试过smtp.yandex.ru而不是smtp.yandex.com吗?
  • 没有帮助。我遇到了同样的错误。

标签: c++ email smtp


【解决方案1】:

尝试使用 quickmail_send_secure 而不是 quickmail_send

【讨论】:

    【解决方案2】:

    首先,我看到您正在使用端口 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 时)。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。视觉工作室 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(); 最后

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-23
        • 1970-01-01
        • 2020-04-12
        • 1970-01-01
        • 2017-10-30
        • 2021-09-01
        • 2016-12-11
        • 1970-01-01
        相关资源
        最近更新 更多