Giter Site home page Giter Site logo

m393 / simple-mail Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cutelyst/simple-mail

0.0 0.0 0.0 328 KB

An SMTP library written in C++ for Qt. Allows applications to send emails (MIME with text, html, attachments, inline files, etc.) via SMTP. Supports SSL and SMTP authentication.

License: GNU Lesser General Public License v2.1

C++ 93.56% C 0.21% CMake 6.23%

simple-mail's Introduction

SimpleMail Build Status

The SimpleMail is small library writen for Qt 5 or 6 (C++11) that allows applications to send complex emails (plain text, html, attachments, inline files, etc.) using the Simple Mail Transfer Protocol (SMTP).

Features:

  • Blocking and Asyncronous modes
  • SMTP pipelining
  • TCP and SSL connections to SMTP servers (STARTTLS included)
  • SMTP authentication (PLAIN, LOGIN, CRAM-MD5 methods)
  • sending MIME emails (to multiple recipients)
  • plain text and HTML (with inline files) content in emails
  • nested mime emails (mixed/alternative, mixed/related)
  • multiple attachments and inline files (used in HTML)
  • different character sets (ascii, utf-8, etc) and encoding methods (7bit, 8bit, base64)
  • multiple types of recipients (to, cc, bcc)
  • error handling (including RESET command)
  • output compilant with RFC2045

Examples

Async Exaplame:

#include <QCoreApplication>
#include <SimpleMail/SimpleMail>

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

    // First we need to create an Server object
    auto server = new SimpleMail::Server;

    // We will use the Gmail's smtp server (smtp.gmail.com, port 465, ssl)
    server->setHost("smtp.gmail.com");
    server->setPort(465);
    server->setConnectionType(SimpleMail::Server::SslConnection);

    // We need to set the username (your email address) and the password for smtp authentification.
    server->setUsername("[email protected]");
    server->setPassword("your_password");

    // Now we create a MimeMessage object. This will be the email.
    SimpleMail::MimeMessage message;
    message.setSender(SimpleMail::EmailAddress("[email protected]", "Your Name"));
    message.addTo(SimpleMail::EmailAddress("Recipient's Name <[email protected]>"));
    message.setSubject("Testing Subject");

    // First we create a MimeText object.
    // This must be created with new otherwise it will be deleted once we leave the scope.
    auto text = new MimeText;

    // Now add some text to the email.
    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
    SimpleMail::ServerReply *reply = server->sendMail(message);
    QObject::connect(reply, &SimpleMail::ServerReply::finished, [reply] {
        qDebug() << "ServerReply finished" << reply->error() << reply->responseText();
        reply->deleteLater();// Don't forget to delete it

        qApp->quit();
    });

    app.exec();
}

Blocking example:

#include <QCoreApplication>
#include <SimpleMail/SimpleMail>

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

    // First we need to create an Sender object
    // We will use the Gmail's smtp server (smtp.gmail.com, port 465, ssl)
    SimpleMail::Sender sender("smtp.gmail.com", 465, SimpleMail::Sender::SslConnection);

    // We need to set the username (your email address) and the password
    // for smtp authentification.
    sender.setUser("[email protected]");
    sender.setPassword("your_password");

    // Now we create a MimeMessage object. This will be the email.
    SimpleMail::MimeMessage message;
    message.setSender(SimpleMail::EmailAddress("[email protected]", "Your Name"));
    message.addTo(SimpleMail::EmailAddress("Recipient's Name <[email protected]>"));
    message.setSubject("Testing Subject");

    // First we create a MimeText object.
    auto text = new SimpleMail::MimeText;

    // Now add some text to the email.
    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
    sender.sendMail(message); // Blocks untill mail is delivered or errored
}

License

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

simple-mail's People

Contributors

dantti avatar bluetiger9 avatar buschmann23 avatar derdakon avatar langesebastian avatar mkumas avatar degitx avatar raineforest avatar czdanol avatar ludekvodicka avatar sjinks avatar manugc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.