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).
-
Asynchronous & Synchronous working mode
-
Qt6 compatibility
-
Building as a shared library
-
code of SmtpClient refactored and partially rewrited
-
TLS (STARTTLS) connection is now supported
-
multiple types of recipients (to, cc, bcc)
-
nested mime emails (mixed/alternative, mixed/related)
-
output compilant with RFC2045
-
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
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.
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 ./
To build the project with QMake run the following commands:
$ /qt/install/location/6.x.x/6.x.x/gcc_64/bin/qmake .
$ make
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