1

我在这里遇到一个问题,也许你可以帮帮我。我正在处理一个 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??
}

这就是它打印的内容: 在此处输入图像描述 --如您所见,使用此工具很容易进入标题,但是深入研究 body 对象属性,我没有任何有用的“字段”方法来获取附件例如,这是我需要的。

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

4

1 回答 1

2

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

 std::stringstream s;
 s << pMe->body();
 std::string bodyStr = s.str();
于 2014-09-23T08:14:49.137 回答