diff --git a/mimetreeparser/src/messagepart.cpp b/mimetreeparser/src/messagepart.cpp --- a/mimetreeparser/src/messagepart.cpp +++ b/mimetreeparser/src/messagepart.cpp @@ -47,6 +47,8 @@ #include #include +#include + using namespace MimeTreeParser; //------MessagePart----------------------- @@ -1149,9 +1151,9 @@ mDecryptRecipients.clear(); bDecryptionOk = !decryptResult.error(); -// std::stringstream ss; -// ss << decryptResult << '\n' << verifyResult; -// qCDebug(MIMETREEPARSER_LOG) << ss.str().c_str(); + std::stringstream ss; + ss << decryptResult << '\n' << verifyResult; + qCDebug(MIMETREEPARSER_LOG) << ss.str().c_str(); for (const auto &recipient : decryptResult.recipients()) { if (!recipient.status()) { @@ -1190,6 +1192,18 @@ } else { mPassphraseError = decryptResult.error().isCanceled() || decryptResult.error().code() == GPG_ERR_NO_SECKEY; partMetaData()->isEncrypted = bDecryptionOk || decryptResult.error().code() != GPG_ERR_NO_DATA; + + qDebug() << "okay we are HEREHEREHEREHREHER\n" + << "\ndecryptResult.error().isCanceled(): " << decryptResult.error().isCanceled() + << "\ndecryptResult.error().code(): " << decryptResult.error().code() + << "\nmPassphraseError: " << mPassphraseError + << "\npartMetaData()->isEncrypted: " << partMetaData()->isEncrypted + << GPG_ERR_NO_SECKEY << GPG_ERR_NO_DATA << GPG_ERR_DECRYPT_FAILED; + if (decryptResult.error().isCanceled()) { + qDebug() << "here?"; + setDecryptMessage(false); + } + partMetaData()->errorText = QString::fromLocal8Bit(decryptResult.error().asString()); if (partMetaData()->isEncrypted && decryptResult.numRecipients() > 0) { partMetaData()->keyId = decryptResult.recipient(0).keyID(); diff --git a/mimetreeparser/src/nodehelper.h b/mimetreeparser/src/nodehelper.h --- a/mimetreeparser/src/nodehelper.h +++ b/mimetreeparser/src/nodehelper.h @@ -78,6 +78,11 @@ */ static void magicSetType(KMime::Content *node, bool autoDecode = true); + bool hasMailHeader(const char *header, const KMime::Message *message) const; + KMime::Headers::Base *mailHeaderAsBase(const char *header, const KMime::Message *message) const; + KMime::Headers::Generics::AddressList *mailHeaderAsAddressList(const char *header, KMime::Message *message) const; + QDateTime dateHeader(KMime::Message *message) const; + /** Attach an extra node to an existing node */ void attachExtraContent(KMime::Content *topLevelNode, KMime::Content *content); diff --git a/mimetreeparser/src/nodehelper.cpp b/mimetreeparser/src/nodehelper.cpp --- a/mimetreeparser/src/nodehelper.cpp +++ b/mimetreeparser/src/nodehelper.cpp @@ -501,6 +501,39 @@ node->contentType()->setMimeType(mimetype.toLatin1()); } +bool NodeHelper::hasMailHeader(const char *header, const KMime::Message *message) const +{ + return message->hasHeader(header); +} + +KMime::Headers::Base * NodeHelper::mailHeaderAsBase(const char *header, const KMime::Message *message) const +{ + return message->headerByType(header); +} + +KMime::Headers::Generics::AddressList * NodeHelper::mailHeaderAsAddressList(const char *header, KMime::Message *message) const +{ + /* works without this is maybe faster ? + if(strcmp(header, "to") == 0) { + return message->to(); + } else if(strcmp(header, "replyTo") == 0) { + return message->replyTo(); + } else if(strcmp(header, "bcc") == 0) { + return message->bcc(); + } else if(strcmp(header, "cc") == 0) { + return message->cc(); + } */ + auto addressList = new KMime::Headers::Generics::AddressList(); + const auto hrd = message->headerByType(header); + const QByteArray &data = hrd->as7BitString(false); + addressList->from7BitString(data); + return addressList; +} + +QDateTime NodeHelper::dateHeader(KMime::Message *message) const +{ + return message->date()->dateTime(); +} void NodeHelper::setOverrideCodec(KMime::Content *node, const QTextCodec *codec) {