用curl从c++发送电子邮件
Sending e-mails with curl from C++
我写了一小段代码来发送通知电子邮件,下面是负责发送邮件的函数:
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管理器执行时,它不会发送电子邮件。我也可以通过服务器的命令行发送邮件。
代码似乎停止工作在curl_easy_perform步骤,但我不确定为什么-什么技术可以用来调试这种问题?
Cron作业也在自己创建电子邮件——这可能是问题的原因吗?
编辑:我检查了日志,似乎在cron管理器的情况下,我试图连接到的谷歌smtp服务的IP地址与直接从命令行运行的脚本不同。cron的日志在354 Go ahead
之后结束。其他日志相同
cron:
* 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
-
将CURLOPT_VERBOSE开关设为1L
-
记录失败的错误,并在失败后进行研究
不,事实上,cronjobs发送自己的邮件并不是这段代码失败的原因。
相关文章:
- 尝试从C++访问 UWP 的电子邮件邮件类会导致"REGDB_E_CLASSNOTREG类未注册"错误
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- Qt:使用'mailto:'打开用户的电子邮件客户端失败
- 电子邮件地址中的c++smtp服务器主机名
- 如何使用 c++ (curl) 发送电子邮件
- 在端口 587 (TLS) 上使用 CDO 发送电子邮件时出错
- 预览由Microsoft Outlook 对象库生成的电子邮件
- 如果不有效,如何重复用户输入电子邮件
- 使用REGEX进行电子邮件输入验证C
- 如何从 pjsip 发送电子邮件.是否有任何可用于发送电子邮件的默认方法
- 如何在使用 c++/COM 发送时在电子邮件中插入/嵌入图像文件(.png)
- 使用Regex验证电子邮件和电话字段QT
- 带有 TLS v. 1.2 和 SSL v.3 电子邮件客户端的 Boost.Asio 上下文:ssl3 警报意外消息
- 如何发送带有嵌入图片的电子邮件
- 如何提示用户在C++中输入正确的电子邮件地址格式
- 我在尝试使用 libquickmail 发送电子邮件时收到错误
- C 从电子邮件向量中删除
- 使用VC 应用中的VSTO ADDIN触发Outlook电子邮件附件的删除
- C 和卷曲,发送电子邮件时编码奇怪的字符
- c++中的电子邮件解析器