KMime

kmime_message.cpp
1/*
2 kmime_message.cpp
3
4 KMime, the KDE Internet mail/usenet news message library.
5 SPDX-FileCopyrightText: 2001 the KMime authors.
6 See file AUTHORS for details
7
8 SPDX-License-Identifier: LGPL-2.0-or-later
9*/
10
11#include "kmime_message.h"
12#include "kmime_util_p.h"
13
14using namespace KMime;
15
16namespace KMime
17{
18
22
23Message::~Message() = default;
24
26{
27 // Create the mandatory fields (RFC5322) if they do not exist already.
28 date(true);
29 from(true);
30
31 // Make sure the mandatory MIME-Version field (RFC2045) is present and valid.
33 mimeVersion->from7BitString("1.0");
34
35 // Assemble all header fields.
37}
38
40{
41 KMime::Content *c = this;
42 while (c) {
43 // not a multipart message
45 if (!contentType->isMultipart()) {
46 if (contentType->mimeType() == type || type.isEmpty()) {
47 return c;
48 }
49 return nullptr;
50 }
51
52 // empty multipart
53 if (c->contents().isEmpty()) {
54 return nullptr;
55 }
56
57 // multipart/alternative
58 if (contentType->subType() == "alternative") {
59 if (type.isEmpty()) {
60 return c->contents().at(0);
61 }
62 const auto contents = c->contents();
63 for (Content *c1 : contents) {
64 if (c1->contentType()->mimeType() == type) {
65 return c1;
66 }
67 }
68 return nullptr;
69 }
70
71 c = c->contents().at(0);
72 }
73
74 return nullptr;
75}
76
78{
79 return QStringLiteral("message/rfc822");
80}
81
82// @cond PRIVATE
83#define kmime_mk_header_accessor( type, method ) \
84 Headers::type *Message::method( bool create ) { \
85 return header<Headers::type>( create ); \
86 }
87
88kmime_mk_header_accessor(MessageID, messageID)
89kmime_mk_header_accessor(Subject, subject)
90kmime_mk_header_accessor(Date, date)
91kmime_mk_header_accessor(Organization, organization)
92kmime_mk_header_accessor(From, from)
93kmime_mk_header_accessor(ReplyTo, replyTo)
94kmime_mk_header_accessor(To, to)
95kmime_mk_header_accessor(Cc, cc)
96kmime_mk_header_accessor(Bcc, bcc)
97kmime_mk_header_accessor(References, references)
98kmime_mk_header_accessor(UserAgent, userAgent)
99kmime_mk_header_accessor(InReplyTo, inReplyTo)
100kmime_mk_header_accessor(Sender, sender)
101
102#undef kmime_mk_header_accessor
103// @endcond
104
105}
106
A class that encapsulates MIME encoded Content.
Headers::ContentType * contentType(bool create=true)
Returns the Content-Type header.
T * header(bool create=false)
Returns the first header of type T, if it exists.
virtual QByteArray assembleHeaders()
Reimplement this method if you need to assemble additional headers in a derived class.
QList< Content * > contents() const
For multipart contents, this will return a list of all multipart child contents.
Represents a "Content-Type" header.
QByteArray subType() const
Returns the mime sub-type (second part of the mimetype).
bool isMultipart() const
Returns true if the associated MIME entity is a multipart container.
QByteArray mimeType() const
Returns the mimetype.
QByteArray assembleHeaders() override
Reimplement this method if you need to assemble additional headers in a derived class.
Content * mainBodyPart(const QByteArray &type=QByteArray())
Returns the first main body part of a given type, taking multipart/mixed and multipart/alternative no...
~Message() override
Destroys this Message.
static QString mimeType()
Returns the MIME type used for Messages.
Message()
Creates an empty Message.
KMime::Headers::Date * date(bool create=true)
Returns the Date header.
KMime::Headers::From * from(bool create=true)
Returns the From header.
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:20:12 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.