外网IP监测上报程序(使用Poco库的SMTPClientSession发送邮件)
IPReport
代码地址https://gitee.com/solym/IPReport
项目介绍#
外网IP变动自动上报工具。
写这个工具的目的是为了监测一台服务器的外网IP的变动情况。之前办理的电信宽带是有外网IP的,因此把一台小服务器上的ut管理端口开放出来,以便随时都能添加下载任务。
但是这个外网IP不是固定的,大概每周都会变动一次,变动的时间不固定,所以写了个程序来检测它,改变的时候主动发送信息给我。
编译说明#
程序依赖于Poco
库,需要自己准备。
因为我的服务器装的是ArchLinux
,所以直接使用pacman -Syu poco
安装就好了。
如果是Windows
可以直接使用vcpkg
来编译安装poco
库。
linux下直接使用make
编译即可。
安装使用说明#
无需安装,编译之后可以直接运行。
linux下可以使用nohup ./IPReport 2>&1 1>/dev/null &
来放在后台运行。
Windows下你可以在VS工程属性页->链接器->系统
里面选择子系统为窗口(SUBSYSTEM:WINDOWS)
来生成一个无窗口的窗口应用,就可以无控制台运行了。
获取外网IP方式#
外网IP可以通过访问淘宝的https://www.taobao.com/help/getip.php获取。
邮件发送关键代码#
// 发送邮件通知 // 发送的消息内容 Poco::Net::MailMessage message; message.setSubject("外网IP地址改变通知"); message.setDate(Poco::DateTime().timestamp()); message.addContent(new StringPartSource(lastResult,"text/plain")); message.setSender(mailuser); message.addRecipient(MailRecipient(MailRecipient::PRIMARY_RECIPIENT,mailrecipient)); // 开始发送邮件 // 第一个是非SSL连接的,第二个是SSL连接的 //Poco::Net::SMTPClientSession smtpSession(mailhost); Poco::Net::SecureSMTPClientSession smtpSession(mailhost); smtpSession.open(); // 下面两行是SSL连接必须的 smtpSession.login(); smtpSession.startTLS(); // 登录邮件服务 smtpSession.login(Poco::Net::SMTPClientSession::LoginMethod::AUTH_LOGIN, mailuser, mailpasswd); // 发送出邮件内容 smtpSession.sendMessage(message); // 发送后关闭会话 smtpSession.close();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理