From 988f0fe074faef56c053742fb582d0bb7b980d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20Knau=C3=9F?= Date: Mon, 17 Oct 2016 12:24:32 +0200 Subject: do not include multipart/related in attachmentlist --- framework/domain/mimetreeparser/interface.cpp | 16 ++++++++++++++-- framework/domain/mimetreeparser/tests/interfacetest.cpp | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'framework') diff --git a/framework/domain/mimetreeparser/interface.cpp b/framework/domain/mimetreeparser/interface.cpp index 596dc152..ab56f800 100644 --- a/framework/domain/mimetreeparser/interface.cpp +++ b/framework/domain/mimetreeparser/interface.cpp @@ -818,12 +818,24 @@ QVector Parser::collectAttachmentParts() const } { - const auto parent = content->parent(); + QMimeDatabase mimeDb; + auto _mime = content->parent()->mailMime(); + const auto parent = _mime->parent(); if (parent) { - const auto _mime = parent->mailMime(); + const auto mimetype = parent->mimetype(); + if (mimetype == mimeDb.mimeTypeForName("multipart/related")) { + return false; + } + } + while (_mime) { if (_mime && (_mime->isTopLevelPart() || _mime->isFirstTextPart())) { return false; } + if (_mime->isFirstPart()) { + _mime = _mime->parent(); + } else { + break; + } } } const auto cd = mime->disposition(); diff --git a/framework/domain/mimetreeparser/tests/interfacetest.cpp b/framework/domain/mimetreeparser/tests/interfacetest.cpp index fa372a60..923a7446 100644 --- a/framework/domain/mimetreeparser/tests/interfacetest.cpp +++ b/framework/domain/mimetreeparser/tests/interfacetest.cpp @@ -237,6 +237,8 @@ private slots: QCOMPARE(contentPart->signatures().size(), 0); auto contentList = contentPart->content("plaintext"); QCOMPARE(contentList.size(), 1); + auto contentAttachmentList = parser.collectAttachmentParts(); + QCOMPARE(contentAttachmentList.size(), 0); } }; -- cgit v1.2.3