如何使用mimetic库解析MIME消息的正文部分?

时间:2013-11-11 13:23:56

标签: c++ pop3

我在这里遇到问题,也许你可以帮我一把。我正在处理一个POP3电子邮件帐户,我需要它来解析电子邮件并获取其信息。我正在使用 libCurl 来阅读邮件,而我目前正在使用 mimetic 库来删除内部电子邮件的各个部分。 事实是,我可以轻松地为电子邮件的“标题”做这件事,但我不知道如何为身体做这件事。这是我现在的代码:

void MailServer::PrintMimeStructure(MimeEntity* pMe)
{
    Header& h = pMe->header();  

    Body& b = pMe->body(); //i don't know how to access here!   
    ContentType ct = h.contentType();
    ContentId ci = h.contentId();
    ContentDisposition cd = h.contentDisposition(); 
    if(h.hasField("subject"))
        cout << "<subject>" << h.field("subject").value() << "</subject>" << 
        endl;

    if(h.hasField("from"))
        cout << "<from>" << h.field("from").value() << "</from>" << 
        endl;
    if(h.hasField("to"))
        cout << "<to>" << h.field("to").value() << "</to>" << 
        endl;
    if(h.hasField("message-id"))
        cout << "<message-id>" << h.field("message-id").value() << "</message-id>" << 
        endl;

    if(h.hasField("date"))
        cout << "<date>" << h.field("date").value() << "</date>" << 
        endl;

    //WHAT ABOUT THE BODY??
}

这就是它打印的内容: enter image description here - 正如您所看到的,使用此工具很容易进入标题,但深入了解正文对象属性,我没有任何“field”方法可用于获取附件例如,这就是我所需要的。

无论如何,我会感谢你们的任何帮助!我被困在这里!

1 个答案:

答案 0 :(得分:1)

Body类重载了运算符&lt;&lt;。 您可以使用以下方法获取正文的字符串表示:

 std::stringstream s;
 s << pMe->body();
 std::string bodyStr = s.str();