如何从字符串创建新的 GMimeMessage?
How to create new GMimeMessage from string?
在我的项目中,我将 libgmime 用于 MIME 类型。我正在尝试使用 std::string 作为主体创建新的 GMimeMessage。
根据文档,可以使用 GMimeStream 和 GMimeDataWrapper 来准备数据,然后从中创建 GMimePart此数据将被设置为新消息的 MIME 部分。
代码:
std::string body = "some test data";
GMimeMessage* message = g_mime_message_new(FALSE);
//set header
g_mime_object_set_header((GMimeObject *) message, name.c_str()), value.c_str();
//create stream and write data into it.
GMimeStream* stream;
g_mime_stream_construct(stream, 0, body.length());
g_mime_stream_write_string(stream, body.c_str());
GMimeDataWrapper* wrapper = g_mime_data_wrapper_new_with_stream(stream, GMIME_CONTENT_ENCODING_DEFAULT);
//create GMimePart to be set as mime part of GMimeMessage
GMimePart* mime_part = g_mime_part_new();
g_mime_part_set_content_object(mime_part, wrapper);
g_mime_message_set_mime_part(message, (GMimeObject *) mime_part);
当我尝试以这种方式创建消息时,出现段错误:
g_mime_stream_write_string(stream, body.c_str());
也许我使用了错误的消息创建方法...
正确的做法是什么?
您的初始化错误 GMimeStream *stream
。需要:
GMimeStream *stream;
/* initialize GMime */
g_mime_init (0);
/* create a stream around stdout */
stream = g_mime_stream_mem_new_with_buffer(body_part.c_str(), body_part.length());
参见文档:http://spruce.sourceforge.net/gmime/tutorial/x49.html
和样本:http://fossies.org/linux/gmime/examples/basic-example.c
在我的项目中,我将 libgmime 用于 MIME 类型。我正在尝试使用 std::string 作为主体创建新的 GMimeMessage。 根据文档,可以使用 GMimeStream 和 GMimeDataWrapper 来准备数据,然后从中创建 GMimePart此数据将被设置为新消息的 MIME 部分。 代码:
std::string body = "some test data";
GMimeMessage* message = g_mime_message_new(FALSE);
//set header
g_mime_object_set_header((GMimeObject *) message, name.c_str()), value.c_str();
//create stream and write data into it.
GMimeStream* stream;
g_mime_stream_construct(stream, 0, body.length());
g_mime_stream_write_string(stream, body.c_str());
GMimeDataWrapper* wrapper = g_mime_data_wrapper_new_with_stream(stream, GMIME_CONTENT_ENCODING_DEFAULT);
//create GMimePart to be set as mime part of GMimeMessage
GMimePart* mime_part = g_mime_part_new();
g_mime_part_set_content_object(mime_part, wrapper);
g_mime_message_set_mime_part(message, (GMimeObject *) mime_part);
当我尝试以这种方式创建消息时,出现段错误:
g_mime_stream_write_string(stream, body.c_str());
也许我使用了错误的消息创建方法... 正确的做法是什么?
您的初始化错误 GMimeStream *stream
。需要:
GMimeStream *stream;
/* initialize GMime */
g_mime_init (0);
/* create a stream around stdout */
stream = g_mime_stream_mem_new_with_buffer(body_part.c_str(), body_part.length());
参见文档:http://spruce.sourceforge.net/gmime/tutorial/x49.html 和样本:http://fossies.org/linux/gmime/examples/basic-example.c