Giter Club home page Giter Club logo

qsrmail's Introduction

This repository is no longer maintained and read-only.

QsrMail - a Qt based SMTP client library

Introduction

QsrMail aimes to be a library which brings SMTP support to the Qt framework. The library supports the following features:

  • supports MIME messages with attachments
  • supports QIODevice as attachment source
  • provides Base64 and Quoted Printable attachment encoding
  • provides Content-Type detection through QMimeDatabase
  • supports TLS encryption
  • supports SMTP authentication using CRAM-MD5, PLAIN and LOGIN mechs
  • complete async design with a small memory footprint
  • complete Doxygen documentation with integration into QtCreator
  • comes with a demo application
  • has been built and tested on Linux, OS-X and Windows (using Qt5.3 and MSVC2013 from Visual Studio 2013 Express)

However the library requires Qt5 and does not compile with Qt4 due to some missing features required. Qt4 support is not planned as of now.

Getting started

To compile QsrMail you'll need Qt5 - nothing else. There is no other dependency.

If you compile QsrMail it will always compile a debug and a release build and the libraries will be put into the lib directory in the project root. Depending if you compile a static library version (using CONFIG+=static) or the standard dynamic library build the output files will end up in lib/dynamic/... of lib/static/...:

qsrmail/lib/dynamic:
  libqsrmaild.so                  <-- dll debug build
  libqsrmail.so                   <-- dll release build 
qsrmail/lib/static:
  libqsrmaild.a                   <-- static debug build
  libqsrmail.a                    <-- static release build

To use the library in your project just include the pri file within your .pro file:

TestApp.pro:
...
#CONFIG += qsrmail_static
include(../qsrmail/qsrmail.pri)   <-- path to the qsrmail.pri file
...

If you uncomment the CONFIG+=qsrmail_static line the static library will be linked instead of the dll version.

To compile the demo:

  • open Qt Creator
  • load the qsrmail/qsrmail.pro project
  • add the qsrmail/examples/TestApp/TestApp.pro project
  • since the TestApp project depends on qsrmail you'll have to build the library first

The demo application is a little application which lets you send mail to through a SMTP server and is intented to be a simple playground, where you can explore the API.

The documentation

To build the documentation you need doxygen and graphviz. The build is straightforward:

$ cd qsrmail/doxygen
$ doxygen Doxyfile.public
$ doxygen Doxyfile.internal

This will create two new directories public and internal. Each one contains an index.html file. Just open that in your browser.

  • public is the normal end user documentation while
  • internal also documents the internal classes and provides diagrams for the state machines

You can also integrate the documentation into QtCreator. Therefore in QtCreator go to the menu 'Tools -> Options', select 'Help' from the lefthand list, change to the 'Documentation' tab and click 'Add...'. Navigate to the file qsrmail/doxygen/public/qsrmail.qch and click 'Open'. Click 'Ok' to close the dialog and restart QtCreator. After that the documentation should be available just as any other Qt documentation. (Tested with QtCreator 3.2)

For your convenience the qch files are prebuilt and available in the git repository.

Licensing

QsrMail is licensed under LGPLv3.

qsrmail's People

Contributors

fenderle avatar

Stargazers

Christoph Feck avatar 脏寒 avatar  avatar

Watchers

Ingo Vietense avatar  avatar  avatar

Forkers

riccardopenco

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.