emaildocument.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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 "emaildocumententry.h"
  8. #include <QByteArray>
  9. #include <QString>
  10. #include <QMap>
  11. #include <QDateTime>
  12. #include <QSharedPointer>
  13. class EmailDocument
  14. {
  15. public:
  16. struct Destination
  17. {
  18. QString address;
  19. QString name;
  20. };
  21. EmailDocument();
  22. void parse(const QByteArray& data);
  23. static QByteArray decodeMimeString(const QString &mimeString);
  24. static QString extractAddress(const QString& string);
  25. static QString extractName(const QString& string);
  26. static QDateTime decodeTimeString(const QString& stringRFC822_1123);
  27. Destination to() const { return m_to; }
  28. Destination from() const { return m_from; }
  29. QString subject() const { return m_subject; }
  30. QString returnPath() const { return m_returnPath; }
  31. QDateTime dateTime() const { return m_dateTime; }
  32. QList<QSharedPointer<EmailDocumentEntry>> payload() const { return m_content; }
  33. QByteArray rawData() const { return m_rawData; }
  34. void setComment(const QString& text) { m_comment = text; }
  35. QString comment() const { return m_comment; }
  36. private:
  37. void parseBody();
  38. QByteArray m_rawData;
  39. Destination m_to;
  40. Destination m_from;
  41. QString m_returnPath;
  42. QString m_subject;
  43. QDateTime m_dateTime;
  44. QList<QSharedPointer<EmailDocumentEntry>> m_content;
  45. QString m_comment; // for high level usage
  46. };