gpt4 book ai didi

c++ - 从 C++ 中使用 curl 发送电子邮件

转载 作者:行者123 更新时间:2023-11-28 06:15:03 25 4
gpt4 key购买 nike

我写了一小段发送电子邮件通知的代码,下面是负责发送它的函数:

int send_mail(const char* mail_path) {
CURL *curl;
CURLcode curl_code;
FILE *message;
message = fopen(mail_path, "r");
struct curl_slist *recipients = NULL;

curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_USERNAME, "XXXX");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "YYYY");
curl_easy_setopt(curl, CURLOPT_URL, "ZZZZ");
recipients = curl_slist_append(recipients, "XXXX");
curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "XXX");
curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
curl_easy_setopt(curl, CURLOPT_READDATA, message);
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);

curl_code = curl_easy_perform(curl);

curl_slist_free_all(recipients);
curl_easy_cleanup(curl);
}

return curl_code;
}

当我从命令行使用它时,它工作正常。

虽然在我使用的远程服务器上通过 cron 管理器执行脚本时,它不会发送电子邮件。我也可以通过服务器的 cli 正确发送电子邮件。

代码似乎在 curl_easy_perform 步骤停止工作,但我不确定为什么 - 哪些技术可用于调试此类问题?

Cron 作业也会自己创建电子邮件 - 这可能是问题的原因吗?

编辑:

我检查了日志,似乎在 cron 管理器的情况下,我尝试连接的谷歌 smtp 服务的 IP 地址与直接从命令行运行的脚本不同。来自 cron 的日志在 354 Go ahead 之后结束。除此之外,日志是相同的。

定时任务:

* Rebuilt URL to: smtp://smtp.gmail.com:587/
* Trying 173.194.71.108...

...

> DATA
< 354 Go ahead ra7sm645322lbb.27 - gsmtp
---- stops here ----

命令行:

* Rebuilt URL to: smtp://smtp.gmail.com:587/
* Trying 74.125.195.109...

...

< 354 Go ahead ex5sm4631837wib.2 - gsmtp
< 250 2.0.0 OK 1432828708 ex5sm4631837wib.2 - gsmtp
* Connection #0 to host smtp.gmail.com left intact

最佳答案

  1. 打开CURLOPT_VERBOSE到 1L

  2. 记录失败尝试的 stderr 并在失败后研究它

不,cronjobs 发送自己的邮件这一事实并不是此代码失败的原因。

关于c++ - 从 C++ 中使用 curl 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30493399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com