2011-09-02 12:20:33 +00:00
|
|
|
/*
|
|
|
|
Copyright (c) 2011 - Tőkés Attila
|
|
|
|
|
|
|
|
This file is part of SmtpClient for Qt.
|
|
|
|
|
|
|
|
SmtpClient for Qt is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
SmtpClient for Qt is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY.
|
|
|
|
|
2011-09-02 15:24:39 +00:00
|
|
|
See the LICENSE file for more details.
|
2011-09-02 12:20:33 +00:00
|
|
|
*/
|
|
|
|
|
2011-08-30 18:59:16 +00:00
|
|
|
#include "mimepart.h"
|
2011-11-13 17:18:58 +00:00
|
|
|
#include "quotedprintable.h"
|
2011-08-30 18:59:16 +00:00
|
|
|
|
|
|
|
/* [1] Constructors and Destructors */
|
|
|
|
|
|
|
|
MimePart::MimePart()
|
|
|
|
{
|
2011-11-13 17:18:58 +00:00
|
|
|
cEncoding = _7Bit;
|
|
|
|
prepared = false;
|
2011-08-30 18:59:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
MimePart::~MimePart()
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* [1] --- */
|
|
|
|
|
|
|
|
|
|
|
|
/* [2] Getters and Setters */
|
|
|
|
|
2011-11-13 17:18:58 +00:00
|
|
|
void MimePart::setContent(const QByteArray & content)
|
2011-08-30 18:59:16 +00:00
|
|
|
{
|
|
|
|
this->content = content;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MimePart::setHeader(const QString & header)
|
|
|
|
{
|
|
|
|
this->header = header;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MimePart::addHeaderLine(const QString & line)
|
|
|
|
{
|
|
|
|
this->header += line;
|
|
|
|
}
|
|
|
|
|
|
|
|
const QString& MimePart::getHeader() const
|
|
|
|
{
|
|
|
|
return header;
|
|
|
|
}
|
|
|
|
|
2011-11-13 17:18:58 +00:00
|
|
|
const QByteArray& MimePart::getContent() const
|
2011-08-30 18:59:16 +00:00
|
|
|
{
|
|
|
|
return content;
|
|
|
|
}
|
|
|
|
|
2011-11-13 17:18:58 +00:00
|
|
|
void MimePart::setContentId(const QString & cId)
|
|
|
|
{
|
|
|
|
this->cId = cId;
|
|
|
|
}
|
|
|
|
|
|
|
|
const QString & MimePart::getContentId() const
|
|
|
|
{
|
|
|
|
return this->cId;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MimePart::setContentName(const QString & cName)
|
|
|
|
{
|
|
|
|
this->cName = cName;
|
|
|
|
}
|
|
|
|
|
|
|
|
const QString & MimePart::getContentName() const
|
|
|
|
{
|
|
|
|
return this->cName;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MimePart::setContentType(const QString & cType)
|
|
|
|
{
|
|
|
|
this->cType = cType;
|
|
|
|
}
|
|
|
|
|
|
|
|
const QString & MimePart::getContentType() const
|
|
|
|
{
|
|
|
|
return this->cType;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MimePart::setCharset(const QString & charset)
|
|
|
|
{
|
|
|
|
this->cCharset = charset;
|
|
|
|
}
|
|
|
|
|
|
|
|
const QString & MimePart::getCharset() const
|
|
|
|
{
|
|
|
|
return this->cCharset;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MimePart::setEncoding(Encoding enc)
|
|
|
|
{
|
|
|
|
this->cEncoding = enc;
|
|
|
|
}
|
|
|
|
|
|
|
|
MimePart::Encoding MimePart::getEncoding() const
|
|
|
|
{
|
|
|
|
return this->cEncoding;
|
|
|
|
}
|
|
|
|
|
2011-08-30 18:59:16 +00:00
|
|
|
/* [2] --- */
|
|
|
|
|
|
|
|
|
|
|
|
/* [3] Public methods */
|
|
|
|
|
|
|
|
QString MimePart::toString()
|
|
|
|
{
|
2011-11-13 17:18:58 +00:00
|
|
|
if (!prepared)
|
|
|
|
prepare();
|
2011-11-10 18:50:38 +00:00
|
|
|
|
2011-11-13 17:18:58 +00:00
|
|
|
return mimeString;
|
2011-08-30 18:59:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* [3] --- */
|
|
|
|
|
|
|
|
|
|
|
|
/* [4] Protected methods */
|
|
|
|
|
2011-11-13 17:18:58 +00:00
|
|
|
void MimePart::prepare()
|
|
|
|
{
|
|
|
|
mimeString = QString();
|
|
|
|
|
|
|
|
/* === Header Prepare === */
|
|
|
|
|
|
|
|
/* Content-Type */
|
|
|
|
mimeString.append("Content-Type: ").append(cType);
|
|
|
|
|
|
|
|
if (cName != "")
|
|
|
|
mimeString.append("; name=\"").append(cName).append("\"");
|
|
|
|
|
|
|
|
if (cCharset != "")
|
|
|
|
mimeString.append("; charset=").append(cCharset);
|
|
|
|
|
|
|
|
mimeString.append("\n");
|
|
|
|
/* ------------ */
|
|
|
|
|
|
|
|
/* Content-Transfer-Encoding */
|
|
|
|
mimeString.append("Content-Transfer-Encoding: ");
|
|
|
|
switch (cEncoding)
|
|
|
|
{
|
|
|
|
case _7Bit:
|
|
|
|
mimeString.append("7bit\n");
|
|
|
|
break;
|
|
|
|
case _8Bit:
|
|
|
|
mimeString.append("8bit\n");
|
|
|
|
break;
|
|
|
|
case Base64:
|
|
|
|
mimeString.append("base64\n");
|
|
|
|
break;
|
|
|
|
case QuotedPrintable:
|
|
|
|
mimeString.append("quoted-printable\n");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
/* ------------------------ */
|
|
|
|
|
|
|
|
/* Content-Id */
|
|
|
|
if (cId != NULL)
|
|
|
|
mimeString.append("Content-ID: <").append(cId).append(">\n");
|
|
|
|
/* ---------- */
|
|
|
|
|
|
|
|
|
|
|
|
/* ------------------------- */
|
|
|
|
|
|
|
|
mimeString.append(header).append("\n");
|
|
|
|
|
|
|
|
/* === End of Header Prepare === */
|
|
|
|
|
|
|
|
/* === Content Encoding === */
|
|
|
|
switch (cEncoding)
|
|
|
|
{
|
|
|
|
case _7Bit:
|
|
|
|
mimeString.append(QString(content).toAscii());
|
|
|
|
break;
|
|
|
|
case _8Bit:
|
|
|
|
mimeString.append(content);
|
|
|
|
break;
|
|
|
|
case Base64:
|
|
|
|
mimeString.append(content.toBase64());
|
|
|
|
break;
|
|
|
|
case QuotedPrintable:
|
|
|
|
mimeString.append(QuotedPrintable::encode(content));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
mimeString.append("\n");
|
|
|
|
/* === End of Content Encoding === */
|
|
|
|
|
|
|
|
prepared = true;
|
|
|
|
}
|
2011-08-30 18:59:16 +00:00
|
|
|
|
|
|
|
/* [4] --- */
|