Mailer 1.0.5
C++ daemon for sending order emails via SMTP
Loading...
Searching...
No Matches
email_sender.h
Go to the documentation of this file.
1#ifndef _EMAIL_SENDER_H_
2#define _EMAIL_SENDER_H_
3
4#include <string>
5#include <utility>
6#include <vector>
7
8#include "curl/curl.h"
9
10/// Отправка электронных писем через SMTP (libcurl).
11///
12/// Формирует MIME-сообщение с HTML-телом и вложениями,
13/// аутентифицируется на SMTP-сервере и отправляет письмо.
15public:
16 /// Конструктор.
17 /// @param smtp_server Адрес SMTP-сервера.
18 /// @param smtp_port Порт SMTP-сервера.
19 /// @param protocol Протокол: "smtp" или "smtps".
20 /// @param from_email Адрес отправителя (он же логин для аутентификации).
21 /// @param password Пароль для аутентификации.
22 /// @param from_name Отображаемое имя отправителя.
23 EmailSender(const std::string &smtp_server, const int smtp_port,
24 const std::string &protocol, const std::string &from_email,
25 const std::string &password, const std::string &from_name = "");
27
28 /// Установить тему и тело письма.
29 /// @param subject Тема письма.
30 /// @param body Тело письма (HTML или plain text).
31 void setEmailContent(const std::string &subject = "",
32 const std::string &body = "");
33
34 /// Добавить получателя в поле "Кому".
35 /// @param email_addr E-mail получателя.
36 /// @param name Отображаемое имя получателя.
37 void addRecvEmailAddr(const std::string &email_addr,
38 const std::string &name = "");
39
40 /// Добавить получателя в скрытую копию.
41 /// @param email_addr E-mail получателя копии.
42 /// @param name Отображаемое имя получателя.
43 void addCcEmailAddr(const std::string &email_addr,
44 const std::string &name = "");
45
46 /// Прикрепить файл к письму.
47 /// @param filename Путь к файлу (абсолютный или относительный).
48 void addAttachment(const std::string &filename);
49
50 /// Отправить письмо.
51 /// @return SUCCESS при успешной отправке, FAILURE при ошибке.
52 int send();
53
54private:
55 std::string m_smtp_url; ///< URL SMTP-сервера (protocol://server:port).
56 std::pair<std::string, std::string>
57 m_from; ///< Пара (email, имя отправителя).
58 std::string m_password; ///< Пароль для аутентификации.
59 std::vector<std::pair<std::string, std::string>>
60 m_recvs; ///< Список получателей (email, имя).
61 std::vector<std::pair<std::string, std::string>>
62 m_ccs; ///< Список получателей копии (email, имя).
63 std::string m_email_subject; ///< Тема письма.
64 std::string m_email_body; ///< Тело письма.
65 std::vector<std::string> m_attachments; ///< Список прикреплённых файлов.
66};
67
68#endif /* _EMAIL_SENDER_H_ */
void addCcEmailAddr(const std::string &email_addr, const std::string &name="")
Добавляет получателя в скрытую копию.
std::pair< std::string, std::string > m_from
Пара (email, имя отправителя).
std::vector< std::pair< std::string, std::string > > m_ccs
Список получателей копии (email, имя).
int send()
Отправляет письмо через SMTP (libcurl).
std::string m_smtp_url
URL SMTP-сервера (protocol://server:port).
std::vector< std::string > m_attachments
Список прикреплённых файлов.
void addRecvEmailAddr(const std::string &email_addr, const std::string &name="")
Добавляет получателя в список "Кому".
std::vector< std::pair< std::string, std::string > > m_recvs
Список получателей (email, имя).
EmailSender(const std::string &smtp_server, const int smtp_port, const std::string &protocol, const std::string &from_email, const std::string &password, const std::string &from_name="")
Конструктор.
void setEmailContent(const std::string &subject="", const std::string &body="")
Устанавливает тему и тело письма.
void addAttachment(const std::string &filename)
Прикрепляет файл к письму.
std::string m_password
Пароль для аутентификации.
std::string m_email_body
Тело письма.
~EmailSender()
Деструктор. Очищает списки получателей и вложений.
std::string m_email_subject
Тема письма.