summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Implement decryptionHEADmasterDamien Caliste2024-04-109-0/+187
| | | | | | | | Add decryption interface to the crypto service and implement it for PGP keys via gpgme. Change-Id: Ib74fe36a4af69fe788bf1841ba5621ec0f3d593e Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Remove Factory from QMailCryptographicServiceFactoryDamien Caliste2024-04-106-33/+33
| | | | | | | | | | | This class is not simply a factory creating instances of crypto plugins, but it's more like a service, providing methods on QMailMessagePart to execute cryptographic operations like signing or signature verification. Change-Id: I74f65f27137e3bfe78c0f9614728eca37a031b0c Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Adjust crypto sign() APIDamien Caliste2024-04-108-21/+31
| | | | | | | | | | Make sign() API to operate on a pointer on a part, instead of a reference, to emphasis the fact that it will change the part itself, making it a multipart/signed container. Change-Id: I55a1e2d15ee170909ae4aa8f2c0e8f8e88c9134c Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Remove SERVER_AS_DLLPekka Vuorela2024-04-014-95/+2
| | | | | | | | | I doubt this has been used anywhere in long time. Also for email client example it feels a bit strange. And there's was nothing setting it enabled on the example. Change-Id: I7a408ed490a84789000f2db8eebfa8324b493846 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Remove traces of QAlignedTimerPekka Vuorela2024-04-012-21/+0
| | | | | | | | For what I can tell, this was something in Qt Mobility long time ago. Shouldn't be a thing anymore. Change-Id: Ice7bf7ffb9c561f0757c970eed7804508c1735f3 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Remove DEFINES for QMF_INSTALL_ROOTPekka Vuorela2024-04-011-1/+0
| | | | | | | | | Added by commit df5d21792b09f for searching plugins, and the usage removed later by commit 8889bda929. No other needs so removing the DEFINES. Change-Id: Icebbc49268b32fd4a6cccc9c388ad4608a8ce488 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Remove cruft from some .pro files and remove pointless common.priPekka Vuorela2024-03-3110-123/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | messageserver.pri not used anywhere. Neither PLUGIN_INTERNAL definition is no longer used anywhere. The common.pri isn't too good a common file as it's mostly included outside the src tree, only src/tools/messageserver uses it from the actual sources. Hence removing QMF_ENABLE_LOGGING shouldn't affect anything since it's used only in the libqmfclient for one thing. To use that properly one has needed the definition value passed externally. The win/mac special case release mode I didn't understand too well and neither did qtbase run_pro2cmake.py I was testing to proceed with cmake build. Unsure was that CONFIG_WIN working even in qt5 or was that some earlier thing. The mac bundle would have been used only for unit tests and such, so feels pointless. As neither target now even works because of d-bus ipc, let's just remove this part. Removing these makes the common.pri even more pointless so just moved the INSTALL=target to few places that were using the common.pri Change-Id: Ibfe6da554e0d452e09d08e184e22508c1af958e0 Reviewed-by: Damien Caliste <dcaliste@free.fr> Reviewed-by: Christopher Adams <chris.adams@qinetic.com.au>
* Simplify qmailglobal.hPekka Vuorela2024-03-252-35/+10
| | | | | | | | | | | | | | Only one place using ENFORCE and even that could be better explicitly handling the error case -> Remove. Removed extra wrappers for Q_DECL_EXPORT/IMPORT. QMF_VISIBILITY not used anywhere, thus removed. Also removed SINGLE_MODULE_QTOPIAMAIL, assuming no need these days. Change-Id: I86796ce16ab74cfd349cb199b41f41a052116bbd Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Damien Caliste <dcaliste@free.fr> Reviewed-by: Christopher Adams <chris.adams@qinetic.com.au>
* Properly compare uint with static valuesDamien Caliste2024-02-281-4/+4
| | | | | | | | | Avoid link issues with certain Qt versions, when using QCOMPARE() with static int values clashes with methods returning uint. Change-Id: I1eb20dbf6d140e77234e794cb1500288ea5637ba Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Disambigue filename using radical(XX).extDamien Caliste2024-02-281-42/+18
| | | | | | | | | | | | | When saving an attachment to disk, and the destination file already exists, the previous solution was to change the destination to something like <random chars>.<filename>. This patch changes this scheme to something like <filename>(XX).<ext>. Change-Id: Ia7055c0862660c734c70f864fc6e34e7f890b261 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Reset parts when setting a bodyDamien Caliste2024-02-263-11/+68
| | | | | | | | | | | | | | | | | | | | | Currently, setBody() is called to set content to an empty part. Everywhere in the code, this method is called like an initializer, or behind a test checking that the part is indeed MultipartNone. But setBody() being in the public API, nothing restrain the user to call it on a part that already contains something, including several subparts. Ensure that subparts are removed when setting a body with content. Similar to what is done in addAttachmentsToMultipart(), unset the attachment flag if the part we set a body to is actually a message itself. Change-Id: I245c5543cd85afed1176987e190900ff930efdbb Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Exclude parts containing signature data only in multipart/signed contextsDamien Caliste2024-01-152-10/+19
| | | | | | | | | | | Allow to list *.asc and *.sig (i.e. signature data) as attachments when they are not used in a multipart/signed context. Only hide such files when they are used as second part in a multipart/signed email. Change-Id: Ie4ac7af88f30c817b10c044d986aba44e27faaf1 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Mark overridden methods with keywordPekka Vuorela2023-12-1437-631/+741
| | | | | | | | | | | | | Avoiding a lot of compiler noise from -Wsuggest-override. Also removed the now even reduntant virtual keywords on overridden methods as per qt coding conventions. And wrapped some overly long lines touched by the changes. Change-Id: I4e7febfa9554dfa7f366a1aabba6133a9f6c5614 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Damien Caliste <dcaliste@free.fr> Reviewed-by: Christopher Adams <chris.adams@qinetic.com.au>
* Fix build on Qt6Pekka Vuorela2023-12-142-0/+9
| | | | | | | | | | | | | | | | | | | | Regression on the D-Bus ipc which introduced e.g. Q_DECLARE_USER_METATYPE(QMailMessagePart) on qmailmessage.h. On Qt6 the qRegisterMetaType() ends up instantiating template<QDebug> QMailMessagePartPrivate::serialize(type) which then fails to build due to not having << operator for combination of QDebug and QMailMessagePartContainer::Location. Compiler ends up spewing pages and pages of errors and warnings. Not entirely following what's causing the difference to Qt5, and how QDebug serialize() works with one class but not on other, but suppose this explicit operator should be clean enough and avoiding side-effects on the actually running code. Change-Id: I4939e89d625ac06c682adbb5e31803e1ef019fd1 Reviewed-by: Damien Caliste <dcaliste@free.fr> Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Avoid deprecated APIPekka Vuorela2023-12-142-2/+2
| | | | | | | | | | | QWARN() is deprecated in Qt6 and QByteArray::count() in Qt 6.4. Both easy to avoid. Translatable output in a unit test seems silly. Change-Id: I9fab798cff548534789bb2830c00c650bed84143 Reviewed-by: Damien Caliste <dcaliste@free.fr> Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Fix connecting to obsolete & removed signalPekka Vuorela2023-12-111-6/+6
| | | | | | | | Qt 5.15 replaced QAbstractSocket::error with errorOccurred, and the old name removed in Qt6. Change-Id: Id09b1594ea2e2c10b663ecdbb7380897c2d31725 Reviewed-by: Christopher Adams <chris.adams@qinetic.com.au>
* Introduce acceptUntrustedCertificates() configurationPekka Vuorela2023-11-3014-35/+116
| | | | | | | | | Allows connections to be made to servers even when the TLS certficiate is not trusted (e.g. broken certificate chain). Change-Id: If912be7d7e4824f243471b40ef5c4d5acb0c31ab Reviewed-by: Damien Caliste <dcaliste@free.fr> Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Make flushIpcNotifications a slotDamien Caliste2023-11-231-2/+1
| | | | | | | | This method is called by a timer and must be a slot. Change-Id: I3428174771320263d1fb667d55cff2a5c95878f7 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Don't readd received IPC signals in the event loopDamien Caliste2023-11-214-97/+14
| | | | | | | | | | | | | | | With QCop IPC implementation, received signals where put in a message queue to be processed in the next event loop iteration. This is not needed anymore with the DBus implementation, since the receiving process lives in a different thread and already submit received signals in the event loop of the main thread. Change-Id: I4ebfb2b03f7ab21a27642d380b5dc2fe5c281791 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Do AUTHENTICATE PLAIN in two stagesValério Valério2023-11-211-10/+16
| | | | | | | | | | Some servers(e.g yandex.ru) do not support AUTHENTICATE PLAIN in a single command, according to RFC4616 this way is optional, so we always perform the authentication in two stages that is guarantee to be supported by all implementations of the protocol. Change-Id: I56ea5a4acaf446fdea14543416866442c27dc074 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Discover authentication for SMTP/IMAPDamien Caliste2023-11-2110-1/+265
| | | | | | | | | | Use the announced capabilities in SMTP/IMAP plugin to setup the authentication method to use. Add handling for error 504 on authentication in SMTP. Change-Id: I556281895e650768537fc6169816c3e8e6a81362 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Set replied and forwarded flags on message update from serverDamien Caliste2023-11-212-0/+13
| | | | | | | | | | | | | The replied flag (\Answered in IMAP protocol) is properly set for a new mail. But it was not set on a qresync action (fetching mail updates). The forwarded flag ($Forwarded as an extension in IMAP protocol), was detected in the received flags but was not set or updated in created QMailMessages. Change-Id: I78eb16650dc706e08fee1c6aab68d601159a52e4 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Add QMailMessage::CalendarCancellation flagDavid Llewellyn-Jones2023-11-157-4/+38
| | | | | | | | | | | | | | | | | | | | | | Introduces a CalendarCancellation flag similar to the QMailMessage::CalendarInvitation to be matched against the QMailMessage::status() bitfield. While the CalendarInvitation flag indicates that the message contains an attachment of type text/calendar with "REQUEST" method, the CalendarCancellation flag indicates that there's an attachment of type text/calendar with "CANCEL" method type. In other words, a calendar event cancellation. For reference, the "CANCEL" method of the Content Type header is described in RFC2447 (iMIP) Section 2.4 [1] in combination with the RFC2446 (iTIP) sections 3.2 and 3.2.5 [2] [1] https://tools.ietf.org/html/rfc2447#section-2.4 [2] https://tools.ietf.org/html/rfc2446#section-3.2 Change-Id: I1ef1d8a070e527552dae1ebe1677156bc07ba04d Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Fix some compiler warningsPekka Vuorela2023-11-133-4/+4
| | | | | | | | | Avoid unused variable, QString conversion from ascii and move fall through note so GCC detects it. Change-Id: Id50a2b90c8c8c345a117c713849f65f45515eddb Reviewed-by: Christopher Adams <chris.adams@qinetic.com.au> Reviewed-by: Damien Caliste <dcaliste@free.fr>
* Handle encoded-word's containing partial charactersSlava Monich2023-11-081-18/+38
| | | | | | | | | | | | | | | | | | That's actually a violation of the spec (RFC 2047): https://tools.ietf.org/html/rfc2047#section-5 Each 'encoded-word' MUST represent an integral number of characters. A multi-octet character may not be split across adjacent 'encoded- word's. but if charsets match, the data can be concatenated first and then converted to characters. Which is what all other email clients seem to be doing - I haven't found a single one which wouldn't handle it. Change-Id: I5bbb785343ad60459fa6e52f5728fd796c7e5961 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi> Reviewed-by: Christopher Adams <chris.adams@qinetic.com.au>
* Switch to DBus for IPCDamien Caliste2023-11-0640-5052/+845
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two IPC mechanisms in QMF: - one between the messageserver and clients to perform actions like fetch emails, search, etc. - one between every mailstore instances to notify other instances of changes in the mail database. QCop being discontinued, this patch switchs to use DBus as an IPC transport layer. The first mechanism is implemented by registering an object on the session bus (/messageserver) providing a service (org.qt.messageserver). The second mechanism is implemented by registering each client as an object to the session bus (/mailstore/client) for the interface org.qt.mailstore. Other clients can then listen to updated() signal on this interface. DBus IPC requires to implement operator<<() and operator>>() with QDBusArgument for the objects that need to be transported. In all cases, each objects are serialised up to unitary elemental elements like int, byte arrays, etc. Except for the QMailKeyArgument that uses first a serialisation into a byte array before being sent. This is due to the recursive declaration of QMailKeyArgument with the subKeys members, not working well with QDBusArgument serialisation. Change-Id: I8f10b8b00f73d4b75dad778b591159a765e9fb89 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Share message server with ActionInfoDamien Caliste2023-11-063-41/+46
| | | | | | | | | | | | | | | | | | The ActionObserver is responsible to spawn ActionInfo objects when actionStarted() is received from IPC. Then, the newly created ActionInfo listens as normal Action for update signals over IPC. But, depending when the ActionInfo creation is actually done, it may have missed IPC update signals. To avoid this, the observer is sharing its QMailMessageServer, and the newly created ActionInfo can connect to signals that are still pending in the message server. Change-Id: I152fdcbeee7a902a0c54b58a28476cdfb31d4dbc Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Listen to activityChanged in action observerDamien Caliste2023-10-182-27/+10
| | | | | | | | | | | | | | | | | | | | | | | There is a race condition in the way the observer is listening on activity change for the actions it is supervising. Indeed, the servicehandler is emitting actionStarted() signal, and then activityChanged(). The observer may receive these signals asynchronously. But with the current implementation, the observer starts listening at activityChanged() after it has received the actionStarted() one. The race condition appears then if the servicehandler emits the activityChanged before the observer received the actionStarted() one. This patch should correct this race condition by making the observer always listen to activityChanged() and deal with it if the activity corresponds to an action it is supervising. Change-Id: I339be274152e648dda50e8bb4667a8fdd70e4cba Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Remove client to server email addition via a fileDamien Caliste2023-10-177-101/+0
| | | | | | | | | | | | | The possibility to transfer from client to the mail server new or modified emails by file has been deprecated by the usage of QMailMessageMetaDataList. The client side implementation is already using only the new method. So remove the server side implementation and IPC interface. Change-Id: I50df8ab04692748e3a1b66341f3b4cd05cc58501 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Flush the store cache on reconnectionDamien Caliste2023-10-164-3/+36
| | | | | | | | | | | | The QMailStorePrivate implementation is using cache for read account, emails... This patch makes this cache aware of a possible disconnection and reconnection to the other store clients. The cache is cleared on reconnection if the database was touched since the last disconnection. Change-Id: If85c66e3981b66d05ea201f72eefa3c3329bd813 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Delete deprecated message count signals in IPCDamien Caliste2023-10-106-67/+12
| | | | | | | | | | | | | | | | | The newCountChanged signal is not used anymore in the message server. Remove the client code exposing it. Remove also client method acknowledgeNewMessages() since it's linked to newCountChanged signal to reset the counters. Remove the internal QMailMessageServerPrivate::initialize() since it's not called from anywhere and the server has no slot for this signal. Change-Id: Id5a67c22eae2c7190c3e02ed0681eab7037f1fcc Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Provide default values for QMailKeyArgument() and FileLoggerDamien Caliste2023-10-042-2/+4
| | | | | | | | | | Avoid uninitialized values with the default QMailKeyArgument constructor. Also set FileLogger::do_cntr in the class definition to avoid missing its initialization in constructors. Change-Id: If25e6a572c13aca0afb4d1017111e8ad769af01a Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Properly deserialize the array size in QMailKeyArgumentDamien Caliste2023-10-041-1/+1
| | | | | | | | The size of a QmfList may not be the same length in bytes than an int. Change-Id: If3c04944e22255b217502b1018b3aae898e333f7 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Set the encryption status on IMAP receptionDamien Caliste2023-09-201-0/+3
| | | | | | | | | When the structure of the email is received in an IMAP transfer, set or not the encryption flag, as it is done for attachments. Change-Id: Ief42663d2c38c19b1cd29c21b35f67e4cfcb1fb2 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Define a flag to mark encrypted emailsDamien Caliste2023-09-053-0/+26
| | | | | Change-Id: I5eef7a1e8b566e43af9e5dcb86d00b4aa0c891dd Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Treat non text parts without content disposition as attachmentsDamien Caliste2023-09-011-1/+5
| | | | | | | | | | | | | | | | Some mails don't provide the Content-Disposition: tag, providing just a Content-Type:. This commit modifies the findAttachment strategy to treat all such parts as attachments if they are not of text type, or known cryptographic parts. Example of such disposition: -------------02837317639187261987642987516514411 Content-Type: application/pdf; name=ebillet_1_2.pdf Content-Transfer-Encoding: base64 Change-Id: I4eecc04134dcf40d2e39b856c29a0e60531221e8 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Use correct key count in MailKeyImpl::deserialize()Tomi Leppänen2021-09-101-1/+1
| | | | | | | | | Fix a typo in MailKeyImpl::deserialize(). This causes messageserver to eat all memory on some devices when searching mail. Change-Id: I499213f2ad14087c8f97d65584b666bcced91286 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi> Reviewed-by: Christopher Adams <chris.adams@jolla.com>
* Fix bug when detecting HEADER / BODY substringsChris Adams2021-08-301-2/+3
| | | | | | | | | | The behavior should be equivalent to old QRegExp::lastIndexIn(str). Without this fix, we never hit the "detach" which causes a variety of further issues when creating the QMailMessage. Change-Id: Ib9b91cd16e1d9cb6eeb1c255eea06ab387c2b9b4 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Bump version to 6.0.0 since we build against Qt6 nowChris Adams2021-04-091-1/+1
| | | | | | Change-Id: Ic732936d1bd233d035f029d5f5acd664b1a1a566 Reviewed-by: David Llewellyn-Jones <david.llewellyn-jones@jolla.com> Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
* Set PLUGIN_CLASS_NAME in plugin .pro filesChris Adams2021-04-097-0/+7
| | | | | | | | | Ensures that cmake files are generated appropriately. Change-Id: I2521114a527510ff7bf2e73092251147157a29d1 Reviewed-by: Damien Caliste <dcaliste@free.fr> Reviewed-by: David Llewellyn-Jones <david.llewellyn-jones@jolla.com> Reviewed-by: Christopher Adams <chris.adams@jolla.com>
* Stop _incomingDataTimer when imapprotocol object is destroyedDavid Llewellyn-Jones2021-04-091-0/+1
| | | | | | | | | | A crash occurs in case the timer is active and the object is destroyed. Created by Valério Valério <valerio.valerio@jolla.com>, 23 Feb 2015. Change-Id: I95725448eff61a9e51eff0c5dd8fe0e33b971b08 Reviewed-by: Christopher Adams <chris.adams@jolla.com> Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Check if IDLE connection needs to be established after loginDavid Llewellyn-Jones2021-04-091-0/+10
| | | | | | | | | | | Some servers only advertise full capabilities after sucessful login, so we need to check if IDLE connection needs to be established in such cases. Created by Valério Valério <valerio.valerio@jolla.com>, 11 May 2015. Change-Id: I307f7be0e07b1639c80f01a3205bcff9de96525a Reviewed-by: Christopher Adams <chris.adams@jolla.com>
* Support ~ as specifier for log file pathsTomi Leppänen2021-04-091-1/+5
| | | | | | | | With this ~ is expanded to QDir::homePath(). This allows to store logs inside home directory without knowing username. Change-Id: I17cbd4b3d837eae7b5588991f18db7f6e76be2a4 Reviewed-by: Christopher Adams <chris.adams@jolla.com>
* Use socket's local address for HELO and EHLO messagesRaine Makelainen2021-04-091-4/+9
| | | | | | | | | Prefer first local domain name if we have one. After that if we have host address that is valid for any interface, then use it. Change-Id: I91acc9329b68f2146a7158eedc49d7a506b48376 Reviewed-by: Christopher Adams <chris.adams@jolla.com> Reviewed-by: David Llewellyn-Jones <david.llewellyn-jones@jolla.com>
* Set new IMAP folders to inherit SynchronizationEnabled flagDavid Llewellyn-Jones2021-04-091-1/+4
| | | | | | | | | | | | | | | | | When new folders are received from the server, the client-side SynchronizationEnabled flag must be set for them. Previously they were always set to true, but if they're inside a folder that isn't being synced, this probably doesn't reflect the user's intent. This change makes it so that for IMAP any new folders received from the server will have the SynchronizationEnabled flag set to whatever value their parent has it set to. If they have no parent (i.e. are in the root folder) then the flag is set to true as before. Change-Id: If43d5e2b4469a402d203841c04cc4b1b30ffc3b1 Reviewed-by: Christopher Adams <chris.adams@jolla.com> Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Damien Caliste <dcaliste@free.fr>
* Follow the synchronizationEnabled flag when folders are not specifiedDamien Caliste2021-04-093-11/+33
| | | | | | | | | | | | | | If the synchronizationEnabled flag is set to false, a variety of strategy, like search, folder listing, will not search in such folders. This is maybe a too restrictive usage of this flag. This patch change the behavior of this flag to act on synchronization strategies only, when desired. It activates it only for message retrieval in all folders. Change-Id: Iebec872984c7e2650167ae585b06bfa3d8cd6990 Reviewed-by: Christopher Adams <chris.adams@jolla.com> Reviewed-by: David Llewellyn-Jones <david.llewellyn-jones@jolla.com>
* Use sentences in description of database actions instead of routine namesDamien Caliste2021-04-091-42/+42
| | | | | | | | | | | The previous situation could lead to undescriptive messages in the log like "unable to account" for the ::account() routine. Using longer sentences enable to obtain something like "unable to inquire account from id". Change-Id: I6044ad99bc657231e894f204152eace979b3705e Reviewed-by: Christopher Adams <chris.adams@jolla.com>
* Add missing slash character as protected in header parametersDamien Caliste2021-04-092-1/+10
| | | | | | | | | | | For some reason the '/' character that is defined as a protected character in RFC2045 for values of parameters in header Content-Type field, was missing. As a result the protocol parameter for multipart/signed emails was not escaped which is faulty and was confusing some email clients. Change-Id: Id9d43b883187317ec152eea56819822612bfe307 Reviewed-by: Christopher Adams <chris.adams@jolla.com>
* Fix some unit test failures resulting from recent qtbase changesChris Adams2021-04-082-28/+28
| | | | | | | | Explicitly construct QByteArray or QString test data Change-Id: Ibfb8f1e0da4af3c2309c2e5a39ab3da42a6c700c Reviewed-by: Pekka Vuorela <pvuorela@iki.fi> Reviewed-by: David Llewellyn-Jones <david.llewellyn-jones@jolla.com>
* Use a range for instead of foreachDamien Caliste2021-04-081-2/+2
| | | | | | | Change-Id: I33343e5d2c6c0b40e2bf70eb43b792221c980a36 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Llewellyn-Jones <david.llewellyn-jones@jolla.com> Reviewed-by: Christopher Adams <chris.adams@jolla.com>