通过免费 C++ 库发送/接收带 HTML 内容的电子邮件
开源 C++ 邮件库,用于发送和接收电子邮件,支持现代身份验证、MIME 格式、附件、SMTP、HTML 内容以及 SSL/TLS 加密。
SimpleMail 是什么?
在现代 C++ 开发领域,高效且安全地处理电子邮件功能对各种应用至关重要——从通知系统到用户验证。虽然许多高级语言提供了丰富的 SMTP 邮件处理库,C++ 长期缺乏真正轻量且简洁的解决方案。SimpleMail 是基于 QtCore 和 QtNetwork 模块构建的 C++ 库。它提供了一个简易接口,用于通过 SMTP 服务器发送符合 MIME 标准的邮件,支持 SSL/TLS 加密、SMTP 身份验证、纯文本和 HTML 消息内容、文件附件、多收件人(To、Cc、Bcc)等。监测环境的设备(例如温度传感器或智能家居网关)可以使用 SimpleMail 在出现异常时提醒用户。
SimpleMail 是一个极简却功能强大的库,使 C++ 应用能够通过 SMTP 发送带附件、HTML 内容等的邮件。该库在 GitHub 上维护,基于 Qt 的 SMTP 客户端库,旨在易用、灵活且稳健。无论是构建桌面应用还是服务器守护进程,SimpleMail 都提供了干净实用的接口来发送邮件。若您使用 Cutelyst 或 Wt 等框架,SimpleMail 是发送用户通知或事务邮件的自然选择。SimpleMail 为希望直接在应用中集成邮件功能的 C++ 开发者带来一股清新之风。凭借小巧的体积、对现代邮件协议的强大支持以及与 Qt 框架的无缝集成,它正是众多 C++ 开发者期待已久的解决方案。
开始使用 SimpleMail
推荐的 SimpleMail 安装方式是使用 GitHub。请使用以下命令进行顺利安装。
通过 GitHub 安装 SimpleMail
git clone https://github.com/cutelyst/simple-mail.git通过 C++ API 创建 HTML 邮件
开源 SimpleMail 库支持发送带纯文本和 HTML 内容的邮件,能够实现更丰富的邮件排版。您可以为视觉效果更佳的邮件指定 HTML 正文,同时为不支持 HTML 的客户端或偏好纯文本的用户提供纯文本备选。库允许在消息中使用 HTML 内容,使得发送带图片或自定义样式的格式化邮件变得轻松。下面的代码片段展示了开发者如何发送带内联图片的 HTML 邮件。
如何通过 C++ API 发送带内联图片的 HTML 邮件?
#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:
"
"
",
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 库为 C++ 应用提供了完整的 SMTP 身份验证支持。库支持纯文本和登录两种身份验证方式,确保兼容大多数 SMTP 服务器,包括 Gmail、Outlook 以及自建服务器。下面的代码片段展示了 C++ 开发者如何轻松配置 SMTP 设置,包括端口 587 上的 STARTTLS。
如何在 C++ 应用中配置 SMTP 设置?
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 库支持使用 SSL(安全套接层)和 TLS(传输层安全)对 SMTP 服务器进行安全连接。配置 SmtpServer 时,可将 ConnectionType 指定为 Ssl 或 Tls,以确保与邮件服务器的通信被加密,从而保护邮件内容和身份验证凭据不被窃取。