想使用邮箱发送东西而且还想使用C++来实现,那么我们可以使用Poco库啦
Poco库是做什么的呢,简单的来说是 开发网络和基于互联网的应用程序 的库啦
废话不多说,直如正题。
0.关于QQ的smtp配置教程
因为已经有人写好了就直接丢个连接自己跟着做了(
https://jingyan.baidu.com/article/148a1921ca88f10c71c3b1b1.html
1.安装Poco库
输入下面的指令来安装Poco库(ubuntu22)
sudo apt-get install libpoco-dev
2.CMake引入Poco库
# 设置cmake的版本
cmake_minimum_required (VERSION 3.16)
project ("Demo")
# 使用C++20
set(CMAKE_CXX_STANDARD 20)
# 找到Poco的NetSSL部分
find_package(Poco REQUIRED COMPONENTS NetSSL)
# 指定最终的可执行文件的位置
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_ROOT_NODE}/bin)
# include到src
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
add_executable (${PROJECT_NAME} ${SRC_LIST})
# 链接Poco::NetSSL到本项目中
target_link_libraries(${PROJECT_NAME} PUBLIC Poco::NetSSL);
项目结构如下 :
3.编码
代码如下
#include <string>
#include <Poco/Net/MailMessage.h>
#include <Poco/Net/SMTPClientSession.h>
#include <Poco/Net/SecureSMTPClientSession.h>
#include <Poco/Net/NetException.h>
int main(int argc, char* argv[])
{
std::string smtp_server { "smtp.qq.com" };
int port { 25 }; // SMTP端口
std::string
sender { "1145141919810@qq.com" }, // 这里填你的qq邮箱(发送方)
recipient { "9961@qq.com" }, // 这个是接收方的邮箱
subject { "我是标题" }, // 这个是邮箱的标题
content { "这是C++的Poco库的SMTP" }, // 这个是邮箱的内容
auth_code { "wahrtdu853svhh" }; // 这个是授权码
try
{
Poco::Net::MailMessage message;
message.setSender(sender);
message.addRecipient(Poco::Net::MailRecipient(Poco::Net::MailRecipient::PRIMARY_RECIPIENT, recipient));
message.setSubject(subject);
message.setContent(content);
Poco::Net::SecureSMTPClientSession smtp(smtp_server, port);
smtp.login(Poco::Net::SMTPClientSession::LoginMethod::AUTH_LOGIN, sender, auth_code);
smtp.sendMessage(message);
// 关闭SMTP
smtp.close();
} catch (Poco::Net::NetException& e) {
std::cerr << "error: " << e.displayText() << std::endl;
return 1;
}
std::cout << "email sent successfully!" << std::endl;
return 0;
}
编译通过发送成功就是完事了(