c - 如何计算单个多部分中的部分数量?
问题描述
使用下面的代码,我可以计算 MIME 消息的所有部分,但是我的要求是在单个多部分正文中计算部分,有人可以帮忙吗?
void testFunc() {
GMimeStream* stream;
GMimeParser* parser;
GMimeMessage* msg;
GMimeObject* root = NULL;
stream = g_mime_stream_fs_new(fd); // Fd is the email file
parser = g_mime_parser_new_with_stream(stream);
g_object_unref(stream);
msg = g_mime_parser_construct_message(parser);
g_object_unref(parser);
if (msg) {
root = g_mime_message_get_mime_part(msg);
int part_count=0;
scan_part(root, &scan_data, &part_count);
}
}
static void scan_part(GMimeObject *part, struct scan_part_data *scan_data, int *part_count) {
gboolean is_multipart = GMIME_IS_MULTIPART(part);
if (is_multipart) {
GMimeMultipart* mpart = GMIME_MULTIPART(part);
int count = g_mime_multipart_get_count(mpart);
int i;
for (i = 0; i < count; i++) {
GMimeObject* subpart = g_mime_multipart_get_part(mpart, i);
scan_part(subpart, scan_data, part_count);
return;
}
} else if (GMIME_IS_MESSAGE_PART(part)) {
GMimeMessage* msg = g_mime_message_part_get_message(GMIME_MESSAGE_PART(part));
GMimeObject* subpart = g_mime_message_get_mime_part(msg);
scan_part(subpart, scan_data, part_count);
return;
}
gboolean is_part = GMIME_IS_PART(part);
if (is_part || is_multipart) {
(*part_count)++;
// some code;
}
}
解决方案
要获取单个多部分的计数,只需执行以下操作:
int count = g_mime_multipart_get_count (multipart);
推荐阅读
- microstrategy - Microstrategy Web API 触发报表上的计划?
- python - 如何使用 ffmpeg 分割多个 mp4 视频?当前解决方案太慢
- java-8 - java8, optional.orElse() 不工作但 optional.orElseGet() 工作
- boto3 - 从 ecs ec2 实例获取自动缩放名称
- sparql - SPARQL - 查询 Getty 数据库(ULAN - 艺术家姓名的联合列表)以获取所有艺术家
- syntax - Robots.txt 中用户代理分组的正确语法:截至 2018 年,所有爬虫是否都“理解”了?
- qpython - Qpython3和androidhelper,droid.dialogSetSingleChoiceItems
- c# - 为什么当我使用参数向 Web API 发出请求时得到全部而不是单一
- ios - 将子视图添加到 UITableViewcell 以进行自定义 tableviewrowactions
- spring-boot - Spring引导中的多个@SessionAttributes