E-Mail-Versand in C++: Bibliotheken und Codebeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

E-Mail-Versand in C++: Überblick über Bibliotheken und praktische Beispiele



Das Senden von E-Mails ist eine Standardaufgabe in Server- und Desktop-Anwendungen. Obwohl C++ keine integrierte Unterstützung für E-Mail-Protokolle bietet, gibt es mehrere ausgereifte Bibliotheken, mit denen Sie den E-Mail-Versand (einschließlich Anhängen und TLS/SSL-Verschlüsselung) in Ihr Projekt integrieren können. In diesem Artikel betrachten wir drei Hauptansätze: die Verwendung von libcurl, der Bibliothek VMime und der POCO C++ Libraries.



1. E-Mail-Versand mit libcurl



libcurl ist eine leistungsstarke plattformübergreifende Bibliothek für die Datenübertragung über verschiedene Protokolle, einschließlich SMTP, SMTPS und SMTP mit STARTTLS. Sie ist Teil des cURL-Projekts und für fast alle Betriebssysteme verfügbar.



Installation von libcurl

Auf Ubuntu/Debian:

sudo apt-get install libcurl4-openssl-dev

Auf macOS (über Homebrew):

brew install curl

Unter Windows können Sie vorkompilierte DLLs herunterladen oder über vcpkg kompilieren.



Beispiel: Einfache E-Mail ohne Anhänge

Der folgende Code verbindet sich mit einem SMTP-Server (Gmail SMTP mit SSL), authentifiziert sich und sendet eine Text-E-Mail.

#include <iostream>#include <string>#include <curl/curl.h>

int main() { CURL *curl = curl_easy_init(); if (!curl) return 1;

// Gmail SMTP Einstellungen curl_easy_setopt(curl, CURLOPT_URL, "smtps://smtp.gmail.com:465"); curl_easy_setopt(curl, CURLOPT_USERNAME, "ihre_email@gmail.com"); curl_easy_setopt(curl, CURLOPT_PASSWORD, "ihr_app_passwort");

// E-Mail-Daten const char *payload_text = "To: empfaenger@example.com\\r" "From: ihre_email@gmail.com\\r" "Subject: Test-E-Mail aus C++\\r" "\\r" "Hallo! Diese E-Mail wurde mit libcurl gesendet.\\r";

curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "ihre_email@gmail.com"); struct curl_slist *recipients = NULL; recipients = curl_slist_append(recipients, "empfaenger@example.com"); curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients); curl_easy_setopt(curl, CURLOPT_READDATA, payload_text);

// Senden CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) std::cerr << "Fehler: " << curl_easy_strerror(res) << std::endl;

curl_slist_free_all(recipients); curl_easy_cleanup(curl); return 0;}


Besonderheiten von libcurl

  • Unterstützung für SMTP, SMTPS (SSL/TLS) und STARTTLS.
  • Möglichkeit zum Senden von Anhängen mittels MIME-Formatierung (manuell oder mit curl_mime).
  • Niedrigschwellige Kontrolle – Sie erstellen Header und E-Mail-Text manuell.
  • Hervorragende Dokumentation und Community-Support.


2. Die Bibliothek VMime



VMime ist eine spezialisierte C++-Bibliothek für die Arbeit mit E-Mails. Sie bietet eine hochwertige API zum Erstellen, Parsen und Senden von Nachrichten mit Unterstützung für MIME, Anhänge und alle modernen E-Mail-Protokolle.



Installation von VMime

Es wird empfohlen, aus den Quellen mit CMake zu kompilieren:

git clone https://github.com/kisli/vmime.gitcd vmimemkdir build && cd buildcmake .. -DVMIME_BUILD_SAMPLES=ONmake -j4sudo make install

Für SSL wird die Bibliothek libgsasl und libssl-dev benötigt.



Beispiel: E-Mail mit Anhang senden

#include <vmime/vmime.hpp>#include <iostream>

int main() { try { // Sitzung erstellen vmime::shared_ptr<vmime::net::session> session = vmime::net::session::create();

// Transport konfigurieren (SMTP mit SSL) vmime::shared_ptr<vmime::net::transport> trans

Empfehlungen