C++ libcurl 使用github库发送smtp邮件失败

标签 c++ libcurl

我正在尝试使用 this git repository 中给出的代码。该代码不是我的,我要感谢 honeyligo 的工作!

不幸的是,我无法正确运行它(我必须修复一些编译问题,但没什么戏剧性的)。

将main.cpp设置为后

#include <unistd.h>
#include "curlsmtp.h"

int main(){
    CurlSmtp* mail = new CurlSmtp(
                "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b9f4e0f8fdfdebfceaeaf9ded4d8d0d597dad6d4" rel="noreferrer noopener nofollow">[email protected]</a>",
                "MYPASSWORD",
                { "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="96f0f9f9d6eff7fef9f9b8f0e4" rel="noreferrer noopener nofollow">[email protected]</a>" },
                {},
                {},
                {},
                "it's a subject",
                "hello world you aredfsf",
                "smtp.gmail.com",
                "465");

    mail->send_mail();
    sleep(3);
    delete mail;

    return 0;
}

它不断返回

* Expire in 200 ms for 1 (transfer 0x558a3b95d7e0)

然后在超时后失败。该代码大约有 500 行长,并且有很好的注释,但我不明白为什么它会失败。我对curl了解不多,但我正在寻找一种自动向我的高中生发送附有pdf的邮件的方法。我需要实现一个 C++ 解决方案,因为这将是一个更大项目的一部分。

感谢您的帮助!

最佳答案

在从 CLI 和使用 libcurl 的 C 应用程序中对 curl 进行一些测试后,我发现了问题:如果您明确使用 smtps (smtps://smtp.gmail.com)。 由于它在此 curlsmtp 库中硬编码为使用 smtp://,因此您可以修改它(set_curl_option 方法)或直接使用 libcurl(这里有一个简单的示例: https://curl.haxx.se/libcurl/c/smtp-mime.html )

此外,您必须在 Google 帐户中设置 2FA 并创建应用密码,或者在没有 2FA 的情况下启用安全性较低的应用的访问权限 ( https://myaccount.google.com/lesssecureapps )。

关于C++ libcurl 使用github库发送smtp邮件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57725645/

相关文章:

c++ - 如何使 Stata 插件不依赖于变量的顺序?

c - realloc() : invalid next size

curl - curl 免费发布库的动机是什么?

php - 如果启用了 libcurl,我可以假设所有 setopt 选项都可用吗?

c - SSL CA 证书 - LibCurl C 语言 (Linux)

使用 libCURL 在 C 中创建 Azure Blob 存储

c++ - 构造函数中的 vector 初始化

c++ - OpenCV VideoCapture 在 Windows 7 32 位中无法读取任何视频文件

c++ - 在哪里可以找到 current 在 Mac 上使用 GCC 编译器的版本?

c++ - 在子进程之间共享指针