我正在尝试使用 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/