В моем проекте я использую libgmime для MIME-типов. Я пытаюсь создать новый GMimeMessage, используя std :: string как тело. Согласно документации это может быть сделано с помощью GMimeStream и GMimeDataWrapper для подготовки данных, а затем создать GMimePart из этих данных, чтобы установить, как MIME часть нового сообщения. Код:Как создать новый GMimeMessage из строки?
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());
Может быть, я использую неправильный метод создания сообщений ... Как правильно это можно сделать?
спасибо, что помогли. – Yaroslav