qtimapclient.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * This file is part of QtEmailFetcher project: Email parser for C++ Qt.
  3. *
  4. * GPLv3+ (c) acetone, 2023
  5. */
  6. #pragma once
  7. #include "emaildocument.h"
  8. #include "IMAPClient.h"
  9. #include <QMutex>
  10. #include <QString>
  11. #include <QSharedPointer>
  12. class QtImapClient {
  13. public:
  14. enum class ConnectionType { START_TLS, SSL, PLAIN_TEXT };
  15. QtImapClient();
  16. ~QtImapClient();
  17. void setHostname(const QString& host) { m_hostname = host; }
  18. void setPort(quint16 port) { m_port = port; }
  19. void setConnectionType(ConnectionType type) { m_connectionType = type; }
  20. void setHttpProxy(const QString& address) { m_proxy = address; }
  21. void setPassword(const QString& password) { m_password = password; }
  22. void setUsername(const QString& username) { m_username = username; }
  23. bool checkUnseen(QList<unsigned int>& result);
  24. QSharedPointer<EmailDocument> fetch(unsigned int mailIndex);
  25. QString errorString() const { return m_errorString; }
  26. private:
  27. bool initConnection();
  28. bool m_inited = false;
  29. QMutex m_mtxInit;
  30. CIMAPClient m_imapClient;
  31. ConnectionType m_connectionType = ConnectionType::START_TLS;
  32. QString m_username;
  33. QString m_password;
  34. QString m_hostname;
  35. quint16 m_port = 993;
  36. QString m_proxy;
  37. QString m_errorString;
  38. QStringList m_backEndErrors;
  39. };