Надсилання/Отримання електронних листів з HTML‑вмістом за допомогою безкоштовної C++ бібліотеки

Бібліотека електронної пошти з відкритим кодом на C++ для надсилання та отримання листів з підтримкою сучасної автентифікації, форматування MIME, вкладень, SMTP, HTML‑вмісту та SSL/TLS‑шифрування.

Що таке SimpleMail?

У світі сучасної розробки на C++ ефективне та безпечне управління функціональністю електронної пошти є критично важливим для широкого спектра застосунків — від систем сповіщень до верифікації користувачів. Хоча багато високорівневих мов пропонують багаті бібліотеки для роботи з SMTP, у C++ історично бракувало справді легкого та простого рішення. SimpleMail — це C++ бібліотека, побудована над модулями QtCore та QtNetwork. Вона надає простий інтерфейс для надсилання листів, сумісних з MIME, через SMTP‑сервери, включаючи підтримку SSL/TLS‑шифрування, автентифікації SMTP, вмісту у вигляді простого тексту та HTML, файлових вкладень, кількох одержувачів (To, Cc, Bcc) тощо. Пристрої, що моніторять умови (наприклад, датчики температури або шлюзи розумного будинку), можуть використовувати SimpleMail для сповіщення користувачів про аномалії.

SimpleMail — це мінімалістична, проте потужна бібліотека, що дозволяє C++ застосункам надсилати листи з вкладеннями, HTML‑вмістом та іншим через SMTP. Підтримувана на GitHub, SimpleMail — це Qt‑базована бібліотека SMTP‑клієнта, розроблена для простоти використання, гнучкості та надійності. Незалежно від того, чи створюєте ви настільний застосунок, чи серверний демон на C++, бібліотека надає чистий та практичний інтерфейс для надсилання листів. Якщо ви використовуєте фреймворки, такі як Cutelyst або Wt, SimpleMail природно підходить для надсилання сповіщень користувачам або транзакційних листів. SimpleMail — це свіже дихання для розробників C++, які шукають інтеграцію можливостей електронної пошти безпосередньо у свої програми. Завдяки невеликому розміру, широкій підтримці сучасних поштових протоколів та безшовній інтеграції з Qt, вона пропонує саме те, чого чекали багато C++ розробників.

Previous Next

Початок роботи з SimpleMail

Рекомендований спосіб встановлення SimpleMail – використання GitHub. Будь ласка, скористайтеся наступною командою для безпроблемної інсталяції.

install SimpleMail via GitHub

git clone https://github.com/cutelyst/simple-mail.git

Створення HTML‑листів за допомогою C++ API

Бібліотека SimpleMail з відкритим кодом підтримує надсилання листів як у вигляді простого тексту, так і у вигляді HTML‑вмісту, що дозволяє створювати більш багаті формати листів. Ви можете вказати HTML‑тіло листа для візуально привабливих повідомлень, одночасно надаючи простий текстовий варіант для поштових клієнтів, які не підтримують HTML, або для користувачів, які віддають перевагу тексту. Бібліотека спрощує надсилання форматованих листів з зображеннями чи власними стилями, оскільки дозволяє включати HTML‑вміст у повідомлення. Наведений нижче код демонструє, як розробники можуть надіслати HTML‑лист з вбудованими зображеннями.

Як надіслати HTML‑лист з вбудованими зображеннями за допомогою C++ API?

#include 

int main() {
    SimpleMail::Mailer mailer("smtp.gmail.com", 587);
    mailer.setUsername("your-email@gmail.com");
    mailer.setPassword("your-password");

    SimpleMail::Mail mail;
    mail.setSender("your-email@gmail.com");
    mail.addTo("recipient@example.com");
    mail.setSubject("HTML Email with Image");

    // HTML content with an embedded image
    mail.setBody(
        "

Welcome!

" "

This is an HTML email with an inline image:

" "Company Logo", SimpleMail::Mail::BodyType::Html ); // Attach an image and reference it in HTML using CID mail.addAttachment("logo.png", "logo", "image/png"); if (mailer.sendMail(mail)) { std::cout << "HTML email sent successfully!" << std::endl; } else { std::cerr << "Error: " << mailer.lastError() << std::endl; } return 0; }

Підтримка SMTP з автентифікацією

Бібліотека SimpleMail з відкритим кодом забезпечує повну підтримку автентифікації SMTP у C++ застосунках. Бібліотека підтримує як просту, так і login‑автентифікацію. Це гарантує сумісність із більшістю SMTP‑серверів, включаючи Gmail, Outlook та власні сервери. Нижче наведено корисний фрагмент коду, який показує, як легко розробникам C++ налаштувати параметри SMTP, включаючи STARTTLS на порту 587.

Як налаштувати параметри SMTP у C++ застосунках?

SimpleMail::Sender sender;
sender.setHost("smtp.example.com");
sender.setPort(587);
sender.setConnectionType(SimpleMail::Sender::TlsConnection);
sender.setUser("your-email@example.com");
sender.setPassword("your-password");

Надсилання листів з вкладеннями за допомогою C++

Додавання вкладень до листів — поширена вимога, і SimpleMail без проблем справляється з цим. Бібліотека спрощує створення нових листів та прикріплення файлів до цих повідомлень всього кількома рядками коду. Вона займається кодуванням вкладення та встановленням відповідних MIME‑типів. Розробники можуть вказати шлях до файлу та, за потреби, власну назву файлу для вкладення. Нижче наведено приклад, який демонструє, як розробники можуть надіслати лист з файловими вкладеннями за допомогою C++ API.

Як надіслати лист з файловими вкладеннями за допомогою C++ бібліотеки?

#include 

int main() {
    SimpleMail::Mailer mailer("smtp.example.com", 465);
    mailer.setUsername("user@example.com");
    mailer.setPassword("password");
    mailer.setSsl(true); // Enable SSL for secure connection

    SimpleMail::Mail mail;
    mail.setSender("user@example.com");
    mail.addTo("client@example.com");
    mail.setSubject("Invoice Attached");
    mail.setBody("Please find the attached invoice.");

    // Attach a PDF file
    mail.addAttachment("/path/to/invoice.pdf", "invoice.pdf", "application/pdf");

    if (mailer.sendMail(mail)) {
        std::cout << "Email with attachment sent!" << std::endl;
    } else {
        std::cerr << "Error: " << mailer.lastError() << std::endl;
    }

    return 0;
}

Краща безпека з підтримкою SSL/TLS

Безпека є надзвичайно важливою під час роботи з електронною поштою. Бібліотека SimpleMail підтримує захищені з’єднання з SMTP‑сервером за допомогою SSL (Secure Sockets Layer) та TLS (Transport Layer Security). При налаштуванні SmtpServer ви можете вказати тип з’єднання як Ssl або Tls, щоб забезпечити шифрування комунікації з поштовим сервером. Це захищає вміст листа та облікові дані автентифікації від перехоплення.

 Українська