如何在卷曲中将邮件正文设置为 html
How to set mail body as html in curl?
我需要将html表作为电子邮件正文发送。我只是做了下面的操作,将内容类型称为html,但它不起作用。
headers = curl_slist_append(headers, "Content-Type: text/html");
/* pass our list of custom made headers */
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
我无法从图书馆网站上找到示例。
>CURLOPT_HTTPHEADER
不适用于任何SMTP选项(CURLOPT_MAIL_FROM
,CURLOPT_MAIL_RCPT
,CURLOPT_MAIL_AUTH
)。 相反,您需要使用 CURLOPT_READFUNCTION
.
/* Disclaimer: untested code */
char *msg = "To: bob@example.comrn"
"From: alice@example.comrn"
"Content-Type: text/html; charset=us-asciirn"
"Mime-version: 1.0rn"
"rn"
"<html><head>rn"
"<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">rn"
"</head><body>rn"
"<p>Hi Bob</p>rn"
"</body></html>rn"
size_t callback(char *buffer, size_t size, size_t nitems, void *instream) {
/* you actually need to check that buffer <= size * nitems */
strcat(buffer, msg);
return strlen(buffer);
}
curl_easy_setopt(curl, CURLOPT_READFUNCTION, callback);
curl_easy_perform(curl);
CURLOPT_READFUNCTION
的文档包含更多信息。 虽然,如果您已经在发送纯文本电子邮件,那么您已经去过那里。
这里唯一没有出现在由sameerkn链接的"通过Curl发送邮件"中没有介绍的真正"技巧"是,您只需将Content-Type
标头转储到电子邮件缓冲区中即可。 没有像HTTP那样聪明的标头设置。
另外:我不确定您是否需要Content-Transfer-Encoding
标头,我已经将上面的charset
设置为us-ascii
但是像utf-8
这样的东西可能需要传输编码。
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
将在您的请求中设置 HTTP 协议标头。
您显示的标题适用于电子邮件数据(标题部分)。
电子邮件数据格式:(它有 2 个部分,标题和正文用空行分隔)
Header: value
Header: value
Content-Type: text/html; charset="UTF-8"
//**********************// << this is a blank line between Header and Body
Body Of Mail
您的电子邮件是否仅包含 HTML?
尝试将以下标头也添加到电子邮件标头:Content-Transfer-Encoding
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"
quoted-printable
是对 HTML 数据进行的编码。您也可以按base64
对数据进行编码。
Content-Transfer-Encoding: base64
**编辑:如果您尝试使用curl发送邮件,请参考通过 CURL 发送邮件
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 如何在boost beast http请求中设置http头
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 如何在24位SDL_Surface上设置像素的颜色
- std::设置自定义比较器
- 如何设置一个范围来提取我想要获得的信息
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 通过选项卡的文本设置QTabWidget顺序
- 浏览器将随机HTTP消息正文发送到我的boost.asio服务器.我可以更改此设置吗?
- 如何在卷曲中将邮件正文设置为 html