A small library written in modern C++ that can be used to send emails with binary attachments.
This library currently only supports the LOGIN/PLAIN SMTP authentication method which means you will need to supply your username and password for your email account when you're sending emails with this library.
This library can be integrated into your project by using the conan package manager or by downloading a release and copying this library's code into your project.
Add the following line into your conanfile.txt:
[requires]
very-simple-smtps/1.0.0
This package can be installed into the project with: conan install conanfile.txt --build=missing
More info can be found on the conan-center package page.
Grab the latest release from here.
You can build a release version of this library by following the instructions below.
Copy over the include folder into your own project and copy either the libsmtp_lib.so or libsmtp_lib.a library file that was built under .conan/src into your own project and link with it. Best of luck!
#include "attachment/attachment.hpp"
#include "email/email.hpp"
using namespace smtp;
int main(void) {
EmailParams params{
"gmail_account@gmail.com", // smtp username
"google_app_password", // smtp password
"smtps://smtp.gmail.com:465", // smtp server
"target@gmail.com", // to
"gmail_account@gmail.com", // from
"", // cc
"Testing sending attachments", // subject
"Hey listen friend here are some attachments for you to play with!", // body
};
Email e{params};
Attachment a{"mountain-beach.jpg"};
Attachment a2{"mountain-beach2.jpg"};
e.addAttachment(a);
e.addAttachment(a2);
e.send();
return 0;
}The scripts below need to be run from the project root i.e ./Very-Simple-SMTPS
$ ./scripts/venv.sh # Creates or starts the python virtual environment required to build and run tests
$ ./scripts/setup.sh # Installs tools required to build and run this project
$ ./scripts/build.sh # Builds the library
$ ./scripts/test.sh # Runs the tests
$ ./scripts/cleanup.sh # Removes build artifactsThis library can be built in either release mode or debug mode and can be built as a shared or static library.
To switch between shared or static builds, the build profiles under ./profiles can be modified by setting the shared variable under [options] to False or True.
The steps below will show you how to build in either debug or release mode.
- [Optional] Consider running the
./scripts/setup.shscript to install tools required for building. - To build, this project relies on the conan package manager and meson.
- The virtual environment needs to be created and the user needs to have activated this virtual environment before this library can be built.
# create or activate python virtual env
$ source ./scripts/venv.sh
# build the library and tests in DEBUG mode by default
$ ./scripts/build.sh
# build the library and tests in RELEASE mode
$ ./scripts/build.sh release- The unit testing framework used is doctest
- To run the tests:
$ ./scripts/test.sh- There is an example of how to send an email with attachments under
./examples/send_attachments.cpp - Fill in the credentials and you should be good to go!
- To run the example:
$ ./.conan/examples/examples- Remove all build artifacts:
$ ./scripts/cleanup.sh- This library has been tested against Amazon SES's SMTPS servers.
- Sender and receiver email addresses do need to be registered and verified in the AWS SES product.
- One of the many SMTPS servers:
smtps://email-smtp.ap-southeast-2.amazonaws.com:465
- Google doesn't seem to allow access to
less secure appsanymore. - To use Google's SMTPS server, two step verification needs to be enabled on the Gmail account.
- Once this has been enabled, we can create an
App password. - This password will be used as the SMTP password.
- The SMTP username is the Gmail address.
- SMTPS server:
smtps://smtp.gmail.com:465
