Stackoverflow的同胞们,我希望你们都心情愉快,以免打败我的问题:)
免责声明:我曾在vmime论坛中问过相同的问题,但没有得到答案,因此再次在此处发布。
问题陈述:
我正在使用vmime尝试解析附件文档和电子邮件,以对附件电子邮件进行一些自定义更改。 在这种情况下,我希望能够即时更改电子邮件,也许将bodyparts / body的引用复制到另一封邮件中并更改相应的标题。
当前状态: 我可以阅读电子邮件,分析内容并解密是否包含附件电子邮件。
这是一个代码段:
###########################################################################
/**
is called recursivels, for all the body parts that have to
be processed
**/
int32_t
ProcessAttachmentPart(std::shared_ptr<vmime::bodyPart> inBodyPart,
std::shared_ptr<vmime::bodyPart> outBodyPart,
int32_t depth)
{
auto header = inBodyPart->getHeader();
if (header->hasField(vmime::fields::CONTENT_TYPE))
{
auto field = header->getField(std::string(vmime::fields::CONTENT_TYPE));
auto partType = field->getValue()->generate();
if (partType == "message/rfc822" == 0)
{
/**
---------------> problem here <-----------------
If this is a sub-message, I have not parsed this message
when I called Message::parse() somewhere before.
How to I get a handle to this message now???
**/
ApplyBodyTransformation( inBodyPart->getBody(),
outBodyPart->getBody());
}
else
{
CopyBodyPart(inBodyPart, outBodyPart);
}
}
else
{
CopyBodyPart(inBodyPart, outBodyPart);
}
ProcessHeaders(inBodyPart, outBodyPart);
return 0;
}
int32_t
ApplyBodyTransformation(const std::shared_ptr<vmime::body> inBody,
std::shared_ptr<vmime::body> outBody)
{
for (auto part : inBody->getPartList())
{
std::shared_ptr<vmime::bodyPart> outBodyPart(new vmime::bodyPart);
ProcessAttachmentPart(part, outBodyPart,depth);
outBody->appendPart(outBodyPart);
}
return 0;
}
我能做什么 -调用inBodyPart-> generate()函数 -将文件读入新消息 -解析新消息并将其附加到最终消息中。
我想做的是不写这个附加文件。
我在代码中找不到任何此类API。 任何帮助将不胜感激。