18 #include "mailheader.h"
21 mailHeader::mailHeader ()
23 setType (
"text/plain");
27 mailHeader::~mailHeader ()
36 const QByteArray label(addLine->
getLabel());
37 const QByteArray value(addLine->
getValue());
39 if (!qstricmp (label,
"Return-Path")) {
40 returnpathAdr.parseAddress (value.data ());
43 if (!qstricmp (label,
"Sender")) {
44 senderAdr.parseAddress (value.data ());
47 if (!qstricmp (label,
"From")) {
48 fromAdr.parseAddress (value.data ());
51 if (!qstricmp (label,
"Reply-To")) {
52 replytoAdr.parseAddress (value.data ());
55 if (!qstricmp (label,
"To")) {
56 mailHeader::parseAddressList (value, toAdr);
59 if (!qstricmp (label,
"CC")) {
60 mailHeader::parseAddressList (value, ccAdr);
63 if (!qstricmp (label,
"BCC")) {
64 mailHeader::parseAddressList (value, bccAdr);
67 if (!qstricmp (label,
"Subject")) {
68 _subject = value.simplified();
71 if (!qstricmp (label.data (),
"Date")) {
75 if (!qstricmp (label.data (),
"Message-ID")) {
76 int start = value.lastIndexOf (
'<');
77 int end = value.lastIndexOf (
'>');
79 messageID = value.mid (start, end - start + 1);
81 qWarning(
"bad Message-ID");
86 if (!qstricmp (label.data (),
"In-Reply-To")) {
87 int start = value.lastIndexOf (
'<');
88 int end = value.lastIndexOf (
'>');
90 inReplyTo = value.mid (start, end - start + 1);
95 mimeHeader::addHdrLine (inLine);
103 originalHdrLines.append (addLine);
107 mailHeader::outputHeader (
mimeIO & useIO)
109 static const QByteArray __returnPath(
"Return-Path: ");
110 static const QByteArray __from (
"From: ");
111 static const QByteArray __sender (
"Sender: ");
112 static const QByteArray __replyTo (
"Reply-To: ");
113 static const QByteArray __to (
"To: ");
114 static const QByteArray __cc (
"CC: ");
115 static const QByteArray __bcc (
"BCC: ");
116 static const QByteArray __subject (
"Subject: ");
117 static const QByteArray __messageId (
"Message-ID: ");
118 static const QByteArray __inReplyTo (
"In-Reply-To: ");
119 static const QByteArray __references(
"References: ");
120 static const QByteArray __date (
"Date: ");
122 if (!returnpathAdr.isEmpty())
123 useIO.outputMimeLine(__returnPath + returnpathAdr.getStr());
124 if (!fromAdr.isEmpty())
125 useIO.outputMimeLine(__from + fromAdr.getStr());
126 if (!senderAdr.isEmpty())
127 useIO.outputMimeLine(__sender + senderAdr.getStr());
128 if (!replytoAdr.isEmpty())
129 useIO.outputMimeLine(__replyTo + replytoAdr.getStr());
132 useIO.outputMimeLine(mimeHdrLine::truncateLine(__to +
133 mailHeader::getAddressStr(toAdr)));
135 useIO.outputMimeLine(mimeHdrLine::truncateLine(__cc +
136 mailHeader::getAddressStr(ccAdr)));
138 useIO.outputMimeLine(mimeHdrLine::truncateLine(__bcc +
139 mailHeader::getAddressStr(bccAdr)));
140 if (!_subject.isEmpty())
141 useIO.outputMimeLine(mimeHdrLine::truncateLine(__subject + _subject));
142 if (!messageID.isEmpty())
143 useIO.outputMimeLine(mimeHdrLine::truncateLine(__messageId + messageID));
144 if (!inReplyTo.isEmpty())
145 useIO.outputMimeLine(mimeHdrLine::truncateLine(__inReplyTo + inReplyTo));
146 if (!references.isEmpty())
147 useIO.outputMimeLine(mimeHdrLine::truncateLine(__references + references));
149 if (!mDate.isEmpty())
150 useIO.outputMimeLine(__date + mDate);
151 mimeHeader::outputHeader(useIO);
155 mailHeader::parseAddressList (
const char *inCStr,
156 QList < mailAddress *> &aList)
160 char *aCStr = (
char *) inCStr;
166 mailAddress *aAddress =
new mailAddress;
167 skip = aAddress->parseAddress (aCStr);
175 aList.append (aAddress);
187 mailHeader::getAddressStr (QList < mailAddress *> &aList)
191 QListIterator < mailAddress *> it = QListIterator < mailAddress *>(aList);
196 retVal += addr->getStr ();