如何解决如何使用libcurl发送电子邮件
我能够成功将电子邮件发送到我的gmail,但是它发送的是空消息,却无法发送包含消息,无论如何,我使用的代码如下:
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#define FROM "<xxxxxx@gmail.com>"
#define TO "<xxxxx@gmail.com>"
static const char* payload_text[] =
{
"To: " TO "\r\n","From: " FROM "\r\n","Subject: SMTP TLS example message\r\n","Contain: Helllo\r\n",NULL
};
struct upload_status {
int lines_read;
};
static size_t payload_source(void* ptr,size_t size,size_t nmemb,void* userp)
{
struct upload_status* upload_ctx = (struct upload_status*)userp;
const char* data;
if ((size == 0) || (nmemb == 0) || ((size * nmemb) < 1)) {
return 0;
}
data = payload_text[upload_ctx->lines_read];
if (data) {
size_t len = strlen(data);
memcpy(ptr,data,len);
upload_ctx->lines_read++;
return len;
}
return 0;
}
int main(void)
{
CURL* curl;
CURLcode res = CURLE_OK;
struct curl_slist* recipients = NULL;
struct upload_status upload_ctx;
upload_ctx.lines_read = 0;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl,CURLOPT_USERNAME,"xxxxxx@gmail.com");
curl_easy_setopt(curl,CURLOPT_PASSWORD,"xxxxxxxx");
curl_easy_setopt(curl,CURLOPT_URL,"smtp://smtp.gmail.com:587");
curl_easy_setopt(curl,CURLOPT_USE_SSL,(long)CURLUSESSL_ALL);
curl_easy_setopt(curl,CURLOPT_MAIL_FROM,FROM);
recipients = curl_slist_append(recipients,TO);
curl_easy_setopt(curl,CURLOPT_MAIL_RCPT,recipients);
curl_easy_setopt(curl,CURLOPT_READFUNCTION,payload_source);
curl_easy_setopt(curl,CURLOPT_READDATA,&upload_ctx);
curl_easy_setopt(curl,CURLOPT_UPLOAD,1L);
curl_easy_setopt(curl,CURLOPT_VERBOSE,1L);
res = curl_easy_perform(curl);
if (res != CURLE_OK)
fprintf(stderr,"curl_easy_perform() failed: %s\n",curl_easy_strerror(res));
curl_slist_free_all(recipients);
curl_easy_cleanup(curl);
}
return (int)res;
}
如何解决此问题?我不认识这个图书馆,我唯一能接受的就是这个主题,谢谢任何人的帮助
解决方法
static const char* payload_text[] =
{
"To: " TO "\r\n","From: " FROM "\r\n","Subject: SMTP TLS example message\r\n","Contain: Helllo\r\n",NULL
};
应该类似于
static const char* payload_text[] =
{
"To: " TO "\r\n","\r\n","Helllo\r\n",NULL
};
那是Contain:
是错误的,标题和消息之间应该有一个空白行。
here中描述了电子邮件格式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。