SmtpClient-for-Qt/src/mimepart.cpp

215 lines
4.1 KiB
C++
Raw Normal View History

2011-09-02 12:20:33 +00:00
/*
2012-07-24 14:06:55 +00:00
Copyright (c) 2011-2012 - Tőkés Attila
2011-09-02 12:20:33 +00:00
This file is part of SmtpClient for Qt.
2012-07-24 14:06:55 +00:00
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.
2011-09-02 12:20:33 +00:00
2012-07-24 14:06:55 +00:00
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.
2011-09-02 12:20:33 +00:00
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"
#include "quotedprintable.h"
2011-08-30 18:59:16 +00:00
/* [1] Constructors and Destructors */
MimePart::MimePart()
{
cEncoding = _7Bit;
prepared = false;
2012-07-23 18:01:08 +00:00
cBoundary = "";
2011-08-30 18:59:16 +00:00
}
MimePart::~MimePart()
{
return;
}
/* [1] --- */
/* [2] Getters and Setters */
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)
{
2012-07-23 18:01:08 +00:00
this->header += line + "\r\n";
2011-08-30 18:59:16 +00:00
}
const QString& MimePart::getHeader() const
{
return header;
}
const QByteArray& MimePart::getContent() const
2011-08-30 18:59:16 +00:00
{
return content;
}
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;
}
MimeContentFormatter& MimePart::getContentFormatter()
{
return this->formatter;
}
2011-08-30 18:59:16 +00:00
/* [2] --- */
/* [3] Public methods */
QString MimePart::toString()
{
if (!prepared)
prepare();
return mimeString;
2011-08-30 18:59:16 +00:00
}
/* [3] --- */
/* [4] Protected methods */
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);
2012-07-23 18:01:08 +00:00
if (cBoundary != "")
mimeString.append("; boundary=").append(cBoundary);
mimeString.append("\r\n");
/* ------------ */
/* Content-Transfer-Encoding */
mimeString.append("Content-Transfer-Encoding: ");
switch (cEncoding)
{
case _7Bit:
mimeString.append("7bit\r\n");
break;
case _8Bit:
mimeString.append("8bit\r\n");
break;
case Base64:
mimeString.append("base64\r\n");
break;
case QuotedPrintable:
mimeString.append("quoted-printable\r\n");
break;
}
/* ------------------------ */
/* Content-Id */
if (cId != NULL)
mimeString.append("Content-ID: <").append(cId).append(">\r\n");
/* ---------- */
2012-07-23 18:01:08 +00:00
/* Addition header lines */
mimeString.append(header).append("\r\n");
2012-07-23 18:01:08 +00:00
/* ------------------------- */
/* === End of Header Prepare === */
2012-07-23 18:01:08 +00:00
/* === Content === */
switch (cEncoding)
{
case _7Bit:
2014-02-16 17:10:37 +00:00
mimeString.append(QString(content).toLatin1());
break;
case _8Bit:
mimeString.append(content);
break;
case Base64:
2012-07-23 18:01:08 +00:00
mimeString.append(formatter.format(content.toBase64()));
break;
case QuotedPrintable:
2012-07-23 18:01:08 +00:00
mimeString.append(formatter.format(QuotedPrintable::encode(content), true));
break;
}
mimeString.append("\r\n");
2012-07-23 18:01:08 +00:00
/* === End of Content === */
prepared = true;
}
2011-08-30 18:59:16 +00:00
/* [4] --- */