libcurl发送邮件代码示例
时间: 2024-10-08 12:19:31 浏览: 46
使用libcurl发送邮件实例,实现smtp/smtp方式,基于VS C++
3星 · 编辑精心推荐
Libcurl是一个强大的开源库,用于从万维网传输数据,包括HTTP、HTTPS、FTP等协议。如果你想使用libcurl发送电子邮件(通常通过SMTP协议),这是一个简单的C语言示例:
```c
#include <curl/curl.h>
#include <stdio.h>
// 定义回调函数处理邮件发送状态
static size_t write_function(void *ptr, size_t size, size_t nmemb, void *stream) {
return fwrite(ptr, size, nmemb, stream);
}
int main() {
CURL *curl;
FILE *file;
// 初始化libcurl
curl_global_init(CURL_GLOBAL_DEFAULT);
// 创建一个curl会话
curl = curl_easy_init();
if(curl) {
// 设置SMTP服务器地址和端口
curl_easy_setopt(curl, CURLOPT_URL, "smtp://your-smtp-server.com:587");
// 设置用户名和密码(如果需要)
curl_easy_setopt(curl, CURLOPT_USERNAME, "your-email@example.com");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "your-password");
// 设置发件人和收件人的邮箱地址
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "your-email@example.com");
curl_slist_append(NULL, "recipient1@example.com"); // 添加多个收件人,用';'分隔
// 设置邮件正文内容
file = fopen("email.txt", "rb");
if(file) {
curl_easy_setopt(curl, CURLOPT_READFUNCTION, write_function);
curl_easy_setopt(curl, CURLOPT_INFILE, file);
curl_easy_setopt(curl, CURLOPT_INFILESIZE, -1); // 使用文件长度作为上传大小
} else {
perror("Error opening file");
return 1;
}
// 执行并捕获错误信息
int res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
return 1;
}
// 清理资源
fclose(file);
curl_easy_cleanup(curl);
curl_global_cleanup();
printf("Email sent successfully.\n");
} else {
perror("curl_easy_init() failed");
return 1;
}
return 0;
}
```
阅读全文