aboutsummaryrefslogtreecommitdiffstats
path: root/src/smtp/mimemessage.h
blob: 24e4f1087596505cc293fcdac5a4b454060e8e23 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
  Copyright (c) 2011-2012 - Tőkés Attila

  This file is part of SmtpClient for Qt.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  See the LICENSE file for more details.
*/

#ifndef MIMEMESSAGE_H
#define MIMEMESSAGE_H

#include "mimepart.h"
#include "mimemultipart.h"
#include "emailaddress.h"
#include <QList>

#include "smtpexports.h"

class SMTP_EXPORT MimeMessage : public QObject {
public:

    enum RecipientType {
        To,                 // primary
        Cc,                 // carbon copy
        Bcc                 // blind carbon copy
    };

    /* [1] Constructors and Destructors */

    explicit MimeMessage(bool createAutoMimeConent = true);

    ~MimeMessage() override;

    /* [1] --- */


    /* [2] Getters and Setters */

    void setSender(EmailAddress *e);

    void addRecipient(EmailAddress *rcpt, RecipientType type = To);

    void addTo(EmailAddress *rcpt);

    void addCc(EmailAddress *rcpt);

    void addBcc(EmailAddress *rcpt);

    void setSubject(const QString &subject);

    void addPart(MimePart *part);

    void setReplyTo(EmailAddress *rto);

    void setInReplyTo(const QString &inReplyTo);

    void setHeaderEncoding(MimePart::Encoding);

    [[nodiscard]] const EmailAddress &getSender() const;

    [[nodiscard]] const QList<EmailAddress *> &getRecipients(RecipientType type = To) const;

    [[nodiscard]] const QString &getSubject() const;

    [[nodiscard]] const QList<MimePart *> &getParts() const;

    [[nodiscard]] const EmailAddress *getReplyTo() const;

    MimePart &getContent();

    void setContent(MimePart *content);
    /* [2] --- */


    /* [3] Public methods */

    virtual QString toString();

    /* [3] --- */

protected:

    /* [4] Protected members */

    EmailAddress *sender{};
    EmailAddress *replyTo;
    QList<EmailAddress *> recipientsTo, recipientsCc, recipientsBcc;
    QString subject;
    QString mInReplyTo;
    MimePart *content;
    bool autoMimeContentCreated;

    MimePart::Encoding hEncoding;

    /* [4] --- */


};

#endif // MIMEMESSAGE_H