The structure of MimePart and its subclasses was modified. Now the
following properties are part of MimePart: content-type, content- added to project.
This commit is contained in:
parent
7b1c826d02
commit
2b7f475766
@ -25,19 +25,18 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
SmtpClient smtp("smtp.gmail.com", 465, SmtpClient::SslConnection);
|
SmtpClient smtp("smtp.gmail.com", 465, SmtpClient::SslConnection);
|
||||||
|
|
||||||
smtp.setUser("your_email_address@gmail.com");
|
smtp.setUser("your_email@gmail.com");
|
||||||
smtp.setPassword("your_password");
|
smtp.setPassword("your_password");
|
||||||
|
|
||||||
// Create a MimeMessage
|
// Create a MimeMessage
|
||||||
|
|
||||||
MimeMessage message;
|
MimeMessage message;
|
||||||
|
|
||||||
message.setSender(new EmailAddress("your_email_address@gmail.com", "Your Name"));
|
message.setSender(new EmailAddress("your_email@gmail.com", "Your Name"));
|
||||||
message.addRecipient(new EmailAddress("recipient@host.com", "Recipient's Name"));
|
message.addRecipient(new EmailAddress("recipient@host.com", "Recipient's Name"));
|
||||||
message.setSubject("SmtpClient for Qt - Demo");
|
message.setSubject("SmtpClient for Qt - Demo");
|
||||||
|
|
||||||
// Add some text
|
// Add some text
|
||||||
|
|
||||||
MimeText text;
|
MimeText text;
|
||||||
text.setText("Hi!\n This is an email with some attachments.");
|
text.setText("Hi!\n This is an email with some attachments.");
|
||||||
message.addPart(&text);
|
message.addPart(&text);
|
||||||
@ -46,7 +45,7 @@ int main(int argc, char *argv[])
|
|||||||
MimeAttachment attachment (new QFile("image1.jpg"));
|
MimeAttachment attachment (new QFile("image1.jpg"));
|
||||||
|
|
||||||
// the file type can be setted. (by default is application/octet-stream)
|
// the file type can be setted. (by default is application/octet-stream)
|
||||||
attachment.setType("image/jpg");
|
attachment.setContentType("image/jpg");
|
||||||
|
|
||||||
// Now add it to message
|
// Now add it to message
|
||||||
message.addPart(&attachment);
|
message.addPart(&attachment);
|
||||||
|
@ -52,11 +52,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// An unique content id must be setted
|
// An unique content id must be setted
|
||||||
image1.setContentId("image1");
|
image1.setContentId("image1");
|
||||||
image1.setType("image/jpg");
|
image1.setContentType("image/jpg");
|
||||||
|
|
||||||
MimeInlineFile image2 (new QFile("image2.jpg"));
|
MimeInlineFile image2 (new QFile("image2.jpg"));
|
||||||
image2.setContentId("image2");
|
image2.setContentId("image2");
|
||||||
image2.setType("image/jpg");
|
image2.setContentType("image/jpg");
|
||||||
|
|
||||||
message.addPart(&html);
|
message.addPart(&html);
|
||||||
message.addPart(&image1);
|
message.addPart(&image1);
|
||||||
|
@ -35,9 +35,10 @@ MimeAttachment::~MimeAttachment()
|
|||||||
|
|
||||||
void MimeAttachment::prepare()
|
void MimeAttachment::prepare()
|
||||||
{
|
{
|
||||||
MimeFile::prepare();
|
this->header += "Content-disposition: attachment\n";
|
||||||
|
|
||||||
this->header += "Content-disposition: attachment;\n";
|
/* !!! IMPORTANT !!! */
|
||||||
|
MimeFile::prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
@ -23,8 +23,9 @@
|
|||||||
MimeFile::MimeFile(QFile *file)
|
MimeFile::MimeFile(QFile *file)
|
||||||
{
|
{
|
||||||
this->file = file;
|
this->file = file;
|
||||||
this->type = "application/octet-stream";
|
this->cType = "application/octet-stream";
|
||||||
this->name = QFileInfo(*file).fileName();
|
this->cName = QFileInfo(*file).fileName();
|
||||||
|
this->cEncoding = Base64;
|
||||||
}
|
}
|
||||||
|
|
||||||
MimeFile::~MimeFile()
|
MimeFile::~MimeFile()
|
||||||
@ -36,26 +37,6 @@ MimeFile::~MimeFile()
|
|||||||
|
|
||||||
/* [2] Getters and setters */
|
/* [2] Getters and setters */
|
||||||
|
|
||||||
void MimeFile::setName(const QString & name)
|
|
||||||
{
|
|
||||||
this->name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MimeFile::setType(const QString & type)
|
|
||||||
{
|
|
||||||
this->type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString & MimeFile::getName() const
|
|
||||||
{
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString & MimeFile::getType() const
|
|
||||||
{
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
|
|
||||||
@ -63,12 +44,12 @@ const QString & MimeFile::getType() const
|
|||||||
|
|
||||||
void MimeFile::prepare()
|
void MimeFile::prepare()
|
||||||
{
|
{
|
||||||
this->header = "Content-Type: " + type + "; name=" + name + "\n";
|
|
||||||
this->header += "Content-Transfer-Encoding: base64\n";
|
|
||||||
|
|
||||||
file->open(QIODevice::ReadOnly);
|
file->open(QIODevice::ReadOnly);
|
||||||
this->content = file->readAll().toBase64() + "\n";
|
this->content = file->readAll();
|
||||||
file->close();
|
file->close();
|
||||||
|
|
||||||
|
/* !!! IMPORTANT !!!! */
|
||||||
|
MimePart::prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
@ -35,12 +35,6 @@ public:
|
|||||||
|
|
||||||
/* [2] Getters and Setters */
|
/* [2] Getters and Setters */
|
||||||
|
|
||||||
void setName(const QString & name);
|
|
||||||
void setType(const QString & type);
|
|
||||||
|
|
||||||
const QString & getName() const;
|
|
||||||
const QString & getType() const;
|
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -48,8 +42,6 @@ protected:
|
|||||||
/* [3] Protected members */
|
/* [3] Protected members */
|
||||||
|
|
||||||
QFile* file;
|
QFile* file;
|
||||||
QString name;
|
|
||||||
QString type;
|
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
|
||||||
|
@ -18,11 +18,9 @@
|
|||||||
|
|
||||||
/* [1] Constructors and Destructors */
|
/* [1] Constructors and Destructors */
|
||||||
|
|
||||||
MimeHtml::MimeHtml(const QString &html)
|
MimeHtml::MimeHtml(const QString &html) : MimeText(html)
|
||||||
{
|
{
|
||||||
this->html = html;
|
this->cType = "text/html";
|
||||||
this->encoding = _7Bit;
|
|
||||||
this->charset = "utf-8";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MimeHtml::~MimeHtml() {}
|
MimeHtml::~MimeHtml() {}
|
||||||
@ -34,33 +32,14 @@ MimeHtml::~MimeHtml() {}
|
|||||||
|
|
||||||
void MimeHtml::setHtml(const QString & html)
|
void MimeHtml::setHtml(const QString & html)
|
||||||
{
|
{
|
||||||
this->html = html;
|
this->text = html;
|
||||||
}
|
|
||||||
|
|
||||||
void MimeHtml::setEncoding(MimePart::Encoding enc)
|
|
||||||
{
|
|
||||||
this->encoding = enc;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MimeHtml::setCharset(const QString & charset)
|
|
||||||
{
|
|
||||||
this->charset = charset;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString & MimeHtml::getHtml() const
|
const QString & MimeHtml::getHtml() const
|
||||||
{
|
{
|
||||||
return html;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString & MimeHtml::getCharset() const
|
|
||||||
{
|
|
||||||
return charset;
|
|
||||||
}
|
|
||||||
|
|
||||||
MimePart::Encoding MimeHtml::getEncoding() const
|
|
||||||
{
|
|
||||||
return encoding;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
@ -69,27 +48,8 @@ MimePart::Encoding MimeHtml::getEncoding() const
|
|||||||
|
|
||||||
void MimeHtml::prepare()
|
void MimeHtml::prepare()
|
||||||
{
|
{
|
||||||
this->header = "Content-Type: text/html; charset="
|
/* !!! IMPORTANT !!! */
|
||||||
+ this->charset + "\n";
|
MimeText::prepare();
|
||||||
|
|
||||||
this->header += "Content-Transfer-Encoding: ";
|
|
||||||
|
|
||||||
switch (encoding)
|
|
||||||
{
|
|
||||||
case _7Bit:
|
|
||||||
header += "7bit\n";
|
|
||||||
content = this->html.toAscii();
|
|
||||||
break;
|
|
||||||
case _8Bit:
|
|
||||||
header += "8bit\n";
|
|
||||||
content = this->html.toUtf8();
|
|
||||||
break;
|
|
||||||
case Base64:
|
|
||||||
header += "base64\n";
|
|
||||||
content = QByteArray().append(this->html).toBase64();
|
|
||||||
}
|
|
||||||
|
|
||||||
this->content += "\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
#ifndef MIMEHTML_H
|
#ifndef MIMEHTML_H
|
||||||
#define MIMEHTML_H
|
#define MIMEHTML_H
|
||||||
|
|
||||||
#include "mimepart.h"
|
#include "mimetext.h"
|
||||||
|
|
||||||
class MimeHtml : public MimePart
|
class MimeHtml : public MimeText
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
@ -35,12 +35,8 @@ public:
|
|||||||
/* [2] Getters and Setters */
|
/* [2] Getters and Setters */
|
||||||
|
|
||||||
void setHtml(const QString & html);
|
void setHtml(const QString & html);
|
||||||
void setEncoding(Encoding enc);
|
|
||||||
void setCharset(const QString & charset);
|
|
||||||
|
|
||||||
const QString& getHtml() const;
|
const QString& getHtml() const;
|
||||||
const QString& getCharset() const;
|
|
||||||
Encoding getEncoding() const;
|
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
@ -48,10 +44,6 @@ protected:
|
|||||||
|
|
||||||
/* [3] Protected members */
|
/* [3] Protected members */
|
||||||
|
|
||||||
QString html;
|
|
||||||
QString charset;
|
|
||||||
Encoding encoding;
|
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
MimeInlineFile::MimeInlineFile(QFile *f)
|
MimeInlineFile::MimeInlineFile(QFile *f)
|
||||||
: MimeFile(f)
|
: MimeFile(f)
|
||||||
{
|
{
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MimeInlineFile::~MimeInlineFile()
|
MimeInlineFile::~MimeInlineFile()
|
||||||
@ -32,16 +31,6 @@ MimeInlineFile::~MimeInlineFile()
|
|||||||
|
|
||||||
/* [2] Getters and Setters */
|
/* [2] Getters and Setters */
|
||||||
|
|
||||||
void MimeInlineFile::setContentId(const QString & cid)
|
|
||||||
{
|
|
||||||
this->cid = cid;
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString & MimeInlineFile::getContentId() const
|
|
||||||
{
|
|
||||||
return cid;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
|
|
||||||
@ -49,10 +38,10 @@ const QString & MimeInlineFile::getContentId() const
|
|||||||
|
|
||||||
void MimeInlineFile::prepare()
|
void MimeInlineFile::prepare()
|
||||||
{
|
{
|
||||||
MimeFile::prepare();
|
this->header += "Content-Disposition: inline\n";
|
||||||
|
|
||||||
this->header += "Content-id: <" + cid + ">\n";
|
/* !!! IMPORTANT !!! */
|
||||||
this->header += "Content-disposition: inline\n";
|
MimeFile::prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
@ -33,17 +33,12 @@ public:
|
|||||||
|
|
||||||
/* [2] Getters and Setters */
|
/* [2] Getters and Setters */
|
||||||
|
|
||||||
void setContentId(const QString & cid);
|
|
||||||
const QString & getContentId() const;
|
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/* [3] Protected members */
|
/* [3] Protected members */
|
||||||
|
|
||||||
QString cid;
|
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
|
||||||
|
|
||||||
|
133
src/mimepart.cpp
133
src/mimepart.cpp
@ -15,11 +15,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "mimepart.h"
|
#include "mimepart.h"
|
||||||
|
#include "quotedprintable.h"
|
||||||
|
|
||||||
/* [1] Constructors and Destructors */
|
/* [1] Constructors and Destructors */
|
||||||
|
|
||||||
MimePart::MimePart()
|
MimePart::MimePart()
|
||||||
{
|
{
|
||||||
|
cEncoding = _7Bit;
|
||||||
|
prepared = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MimePart::~MimePart()
|
MimePart::~MimePart()
|
||||||
@ -32,7 +35,7 @@ MimePart::~MimePart()
|
|||||||
|
|
||||||
/* [2] Getters and Setters */
|
/* [2] Getters and Setters */
|
||||||
|
|
||||||
void MimePart::setContent(const QString & content)
|
void MimePart::setContent(const QByteArray & content)
|
||||||
{
|
{
|
||||||
this->content = content;
|
this->content = content;
|
||||||
}
|
}
|
||||||
@ -52,11 +55,61 @@ const QString& MimePart::getHeader() const
|
|||||||
return header;
|
return header;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString& MimePart::getContent() const
|
const QByteArray& MimePart::getContent() const
|
||||||
{
|
{
|
||||||
return content;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
|
|
||||||
@ -64,9 +117,10 @@ const QString& MimePart::getContent() const
|
|||||||
|
|
||||||
QString MimePart::toString()
|
QString MimePart::toString()
|
||||||
{
|
{
|
||||||
prepare();
|
if (!prepared)
|
||||||
|
prepare();
|
||||||
|
|
||||||
return header + "\n" + content;
|
return mimeString;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
@ -74,6 +128,75 @@ QString MimePart::toString()
|
|||||||
|
|
||||||
/* [4] Protected methods */
|
/* [4] Protected methods */
|
||||||
|
|
||||||
void MimePart::prepare() {}
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
/* [4] --- */
|
/* [4] --- */
|
||||||
|
@ -25,11 +25,11 @@ class MimePart : public QObject
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
/* [0] Enumerations */
|
/* [0] Enumerations */
|
||||||
|
|
||||||
enum Encoding {
|
enum Encoding {
|
||||||
Base64,
|
|
||||||
_7Bit,
|
_7Bit,
|
||||||
_8Bit
|
_8Bit,
|
||||||
|
Base64,
|
||||||
|
QuotedPrintable
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -47,13 +47,28 @@ public:
|
|||||||
/* [2] Getters and Setters */
|
/* [2] Getters and Setters */
|
||||||
|
|
||||||
const QString& getHeader() const;
|
const QString& getHeader() const;
|
||||||
const QString& getContent() const;
|
const QByteArray& getContent() const;
|
||||||
|
|
||||||
void setContent(const QString & content);
|
void setContent(const QByteArray & content);
|
||||||
void setHeader(const QString & header);
|
void setHeader(const QString & header);
|
||||||
|
|
||||||
void addHeaderLine(const QString & line);
|
void addHeaderLine(const QString & line);
|
||||||
|
|
||||||
|
void setContentId(const QString & cId);
|
||||||
|
const QString & getContentId() const;
|
||||||
|
|
||||||
|
void setContentName(const QString & cName);
|
||||||
|
const QString & getContentName() const;
|
||||||
|
|
||||||
|
void setContentType(const QString & cType);
|
||||||
|
const QString & getContentType() const;
|
||||||
|
|
||||||
|
void setCharset(const QString & charset);
|
||||||
|
const QString & getCharset() const;
|
||||||
|
|
||||||
|
void setEncoding(Encoding enc);
|
||||||
|
Encoding getEncoding() const;
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
|
|
||||||
@ -61,23 +76,29 @@ public:
|
|||||||
|
|
||||||
QString toString();
|
QString toString();
|
||||||
|
|
||||||
|
virtual void prepare();
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/* [4] Protected members */
|
/* [4] Protected members */
|
||||||
|
|
||||||
QString header;
|
QString header;
|
||||||
QString content;
|
QByteArray content;
|
||||||
|
|
||||||
|
QString cId;
|
||||||
|
QString cName;
|
||||||
|
QString cType;
|
||||||
|
QString cCharset;
|
||||||
|
Encoding cEncoding;
|
||||||
|
|
||||||
|
QString mimeString;
|
||||||
|
bool prepared;
|
||||||
|
|
||||||
/* [4] --- */
|
/* [4] --- */
|
||||||
|
|
||||||
|
|
||||||
/* [5] Protected methods */
|
|
||||||
|
|
||||||
virtual void prepare();
|
|
||||||
|
|
||||||
/* [5] --- */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MIMEPART_H
|
#endif // MIMEPART_H
|
||||||
|
@ -18,11 +18,12 @@
|
|||||||
|
|
||||||
/* [1] Constructors and Destructors */
|
/* [1] Constructors and Destructors */
|
||||||
|
|
||||||
MimeText::MimeText(const QString &text)
|
MimeText::MimeText(const QString &txt)
|
||||||
{
|
{
|
||||||
this->text = text;
|
this->text = txt;
|
||||||
this->charset = "utf-8";
|
this->cType = "text/plain";
|
||||||
this->encoding = _7Bit;
|
this->cCharset = "utf-8";
|
||||||
|
this->cEncoding = _8Bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
MimeText::~MimeText() { }
|
MimeText::~MimeText() { }
|
||||||
@ -37,31 +38,11 @@ void MimeText::setText(const QString & text)
|
|||||||
this->text = text;
|
this->text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MimeText::setEncoding(MimePart::Encoding enc)
|
|
||||||
{
|
|
||||||
this->encoding = enc;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MimeText::setCharset(const QString & charset)
|
|
||||||
{
|
|
||||||
this->charset = charset;
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString & MimeText::getText() const
|
const QString & MimeText::getText() const
|
||||||
{
|
{
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
MimePart::Encoding MimeText::getEncoding() const
|
|
||||||
{
|
|
||||||
return encoding;
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString & MimeText::getCharset() const
|
|
||||||
{
|
|
||||||
return charset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
|
|
||||||
@ -69,28 +50,11 @@ const QString & MimeText::getCharset() const
|
|||||||
|
|
||||||
void MimeText::prepare()
|
void MimeText::prepare()
|
||||||
{
|
{
|
||||||
this->header = "Content-Type: text/plain; charset="
|
this->content.clear();
|
||||||
+ this->charset + "\n";
|
this->content.append(text);
|
||||||
|
|
||||||
this->header += "Content-Transfer-Encoding: ";
|
|
||||||
|
|
||||||
switch (encoding)
|
|
||||||
{
|
|
||||||
case _7Bit:
|
|
||||||
header += "7bit\n";
|
|
||||||
content = this->text.toAscii();
|
|
||||||
break;
|
|
||||||
case _8Bit:
|
|
||||||
header += "8bit\n";
|
|
||||||
content = this->text.toUtf8();
|
|
||||||
break;
|
|
||||||
case Base64:
|
|
||||||
header += "base64\n";
|
|
||||||
content = QByteArray().append(this->text).toBase64();
|
|
||||||
}
|
|
||||||
|
|
||||||
this->content += "\n";
|
|
||||||
|
|
||||||
|
/* !!! IMPORTANT !!! */
|
||||||
|
MimePart::prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
@ -34,12 +34,8 @@ public:
|
|||||||
/* [2] Getters and Setters*/
|
/* [2] Getters and Setters*/
|
||||||
|
|
||||||
void setText(const QString & text);
|
void setText(const QString & text);
|
||||||
void setEncoding(Encoding enc);
|
|
||||||
void setCharset(const QString & charset);
|
|
||||||
|
|
||||||
const QString & getText() const;
|
const QString & getText() const;
|
||||||
MimePart::Encoding getEncoding() const;
|
|
||||||
const QString & getCharset() const;
|
|
||||||
|
|
||||||
/* [2] --- */
|
/* [2] --- */
|
||||||
|
|
||||||
@ -48,9 +44,6 @@ protected:
|
|||||||
/* [3] Protected members */
|
/* [3] Protected members */
|
||||||
|
|
||||||
QString text;
|
QString text;
|
||||||
QString charset;
|
|
||||||
Encoding encoding;
|
|
||||||
|
|
||||||
/* [3] --- */
|
/* [3] --- */
|
||||||
|
|
||||||
|
|
||||||
|
64
src/quotedprintable.cpp
Normal file
64
src/quotedprintable.cpp
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2011 - Tőkés Attila (tokes_atti@yahoo.com)
|
||||||
|
|
||||||
|
This project 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.
|
||||||
|
|
||||||
|
This project is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY.
|
||||||
|
|
||||||
|
See the LICENSE file for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "quotedprintable.h"
|
||||||
|
|
||||||
|
QString& QuotedPrintable::encode(const QByteArray &input)
|
||||||
|
{
|
||||||
|
QString *output = new QString();
|
||||||
|
|
||||||
|
char byte;
|
||||||
|
const char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||||
|
|
||||||
|
for (int i = 0; i < input.length() ; ++i)
|
||||||
|
{
|
||||||
|
byte = input[i];
|
||||||
|
|
||||||
|
if ((byte == 0x20) || (byte >= 33) && (byte <= 126) && (byte != 61))
|
||||||
|
{
|
||||||
|
output->append(byte);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
output->append('=');
|
||||||
|
output->append(hex[((byte >> 4) & 0x0F)]);
|
||||||
|
output->append(hex[(byte & 0x0F)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QByteArray& QuotedPrintable::decode(const QString &input)
|
||||||
|
{
|
||||||
|
// 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F
|
||||||
|
const int hexVal[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15};
|
||||||
|
|
||||||
|
QByteArray *output = new QByteArray();
|
||||||
|
|
||||||
|
for (int i = 0; i < input.length(); ++i)
|
||||||
|
{
|
||||||
|
if (input.at(i).toAscii() == '=')
|
||||||
|
{
|
||||||
|
output->append((hexVal[input.at(++i).toAscii() - '0'] << 4) + hexVal[input.at(++i).toAscii() - '0']);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
output->append(input.at(i).toAscii());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return *output;
|
||||||
|
}
|
33
src/quotedprintable.h
Normal file
33
src/quotedprintable.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2011 - Tőkés Attila (tokes_atti@yahoo.com)
|
||||||
|
|
||||||
|
This project 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.
|
||||||
|
|
||||||
|
This project is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY.
|
||||||
|
|
||||||
|
See the LICENSE file for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef QUOTEDPRINTABLE_H
|
||||||
|
#define QUOTEDPRINTABLE_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QByteArray>
|
||||||
|
|
||||||
|
class QuotedPrintable : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
|
||||||
|
static QString& encode(const QByteArray &input);
|
||||||
|
static QByteArray& decode(const QString &input);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QuotedPrintable();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // QUOTEDPRINTABLE_H
|
Loading…
Reference in New Issue
Block a user