Skip to content

Latest commit

 

History

History
142 lines (91 loc) · 3.47 KB

README.md

File metadata and controls

142 lines (91 loc) · 3.47 KB

SMTP Client for Qt (C++) - Version 2.0 Linux Build

The SmtpClient for Qt is small library written for Qt 6 (C++ version) that allows application to send complex emails (plain text, html, attachments, inline files, etc.) using the Simple Mail Transfer Protocol (SMTP).

New in version 2.0:

  • Asynchronous & Synchronous working mode

  • Qt6 compatibility

  • Building as a shared library

  • code of SmtpClient refactored and partially rewrited

New in version 1.1:

  • TLS (STARTTLS) connection is now supported

  • multiple types of recipients (to, cc, bcc)

  • nested mime emails (mixed/alternative, mixed/related)

  • output compilant with RFC2045

SMTP Client for Qt supports

  • TCP and SSL connections to SMTP servers

  • SMTP authentication (PLAIN and LOGIN methods)

  • sending MIME emails (to multiple recipients)

  • plain text and HTML (with inline files) content in emails

  • multiple attachments and inline files (used in HTML)

  • different character sets (ascii, utf-8, etc) and encoding methods (7bit, 8bit, base64)

  • error handling

Examples

Lets see a simple example:

#include <QtCore>
#include "../src/SmtpMime"

int main(int argc, char *argv[])
{
{
    QCoreApplication a(argc, argv);

    // This is a first demo application of the SmtpClient for Qt project

    // Now we create a MimeMessage object. This is the email.

    MimeMessage message;

    EmailAddress sender("[email protected]", "Your Name");
    message.setSender(sender);

    EmailAddress to("[email protected]", "Recipient's Name");
    message.addRecipient(to);

    message.setSubject("SmtpClient for Qt - Demo");

    // Now add some text to the email.
    // First we create a MimeText object.

    MimeText text;

    text.setText("Hi,\nThis is a simple email message.\n");

    // Now add it to the mail

    message.addPart(&text);

    // Now we can send the mail
    SmtpClient smtp("smtp.gmail.com", 465, SmtpClient::SslConnection);

    smtp.connectToHost();
    if (!smtp.waitForReadyConnected()) {
        qDebug() << "Failed to connect to host!";
        return -1;
    }

    smtp.login("[email protected]", "your_password");
    if (!smtp.waitForAuthenticated()) {
        qDebug() << "Failed to login!";
        return -2;
    }

    smtp.sendMail(message);
    if (!smtp.waitForMailSent()) {
        qDebug() << "Failed to send mail!";
        return -3;
    }

    smtp.quit();

}

For more examples see the Wiki/Examples.

Building

Building with CMake

To build the project with CMake run the following commands:

$ mkdir build
$ cd build
$ cmake .. -DCMAKE_PREFIX_PATH=/qt/install/location/6.x.x/6.x.x/gcc_64/lib/cmake/Qt6 -DCMAKE_INSTALL_PREFIX="../release"
$ cmake --build ./
$ cmake --install ./

Or if you want to build without the demos and tests:

$ mkdir build
$ cd build
$ cmake .. -DBUILD_TESTS=OFF -DBUILD_DEMOS=OFF -DCMAKE_PREFIX_PATH=/qt/install/location/6.x.x/6.x.x/gcc_64/lib/cmake/Qt6 -DCMAKE_INSTALL_PREFIX="../release"
$ cmake --build ./

Building with QMake

To build the project with QMake run the following commands:

$ /qt/install/location/6.x.x/6.x.x/gcc_64/bin/qmake .
$ make

License

This project (all files including the demos/examples) is licensed under the GNU LGPL, version 2.1.

Copyright (c) 2014-2024 - Attila Tőkés