ZeroOne AI
← 返回文章列表

Python 脚本项目实例(一):获取外网 IP 地址并定时发送 QQ 邮件

👁 20
分类:工业互联网

用 Python 实现自动获取本机外网 IP 并定时发送到指定邮箱:requests 抓取 IP、smtplib+QQ 邮箱授权码发信、sched 定时循环,适合家庭服务器/远程设备的 IP 变动监控与告警。

Python 脚本项目实例(一):获取外网 IP 地址并定时发送 QQ 邮件

一、项目背景

家庭服务器、远程工控设备等场景经常遇到一个问题:设备接入的是动态公网 IP,一旦 IP 变化,用户就无法通过远程桌面、SSH 等方式访问设备。传统做法是"打开网页 → 百度 → 查 IP",繁琐且不及时。

本实例用 Python 实现自动化:脚本自动获取本机外网 IP 地址,并通过 QQ 邮箱定时发送到指定邮箱,让你随时掌握设备的 IP 变动情况。

二、技术方案:技术选型

模块用途
requests请求 IP 查询网页,抓取公网 IP
smtplib + email.mime.text通过 QQ 邮箱 SMTP 发送邮件
re正则表达式从网页中提取 IP 地址
sched + time定时调度,周期性执行任务

编程环境:Python 3.6。

三、系统架构:核心代码

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
import requests
import time, os, sched
import re

from email.mime.text import MIMEText
from email.utils import formataddr

# 发件人邮箱账号 / 授权码 / 收件人邮箱
my_sender = '**********@qq.com'
my_pass   = 'mmmmmmaaaaaaaaaa'
my_user   = '**********@qq.com'

# 获取外网IP地址
def get_out_ip():
    print("读取IP地址=>")
    url = r'http://www.net.cn/static/customercare/yourip.asp'
    readT = requests.get(url)
    Readtxt = readT.text
    pattern = re.compile('<h2>[0-9]+.[0-9]+.[0-9]+.[0-9]+</h2>')
    showv = pattern.search(Readtxt)
    print(showv)
    return Readtxt

# 发送邮件
def mail():
    ret = True
    try:
        ipmsg = "当前IP地址是:" + get_out_ip()
        msg = MIMEText(ipmsg, 'plain', 'utf-8')
        msg['From'] = formataddr(["FromXGRobots", my_sender])
        msg['To'] = formataddr(["XGmail", my_user])
        msg['Subject'] = "家庭服务器IP报告信息"

        server = smtplib.SMTP_SSL("smtp.qq.com", 465)
        server.login(my_sender, my_pass)
        server.sendmail(my_sender, [my_user, ], msg.as_string())
        server.quit()
    except Exception:
        ret = False
    return ret

schedule = sched.scheduler(time.time, time.sleep)

# 主循环:发送邮件并定时
while True:
    ret = mail()
    if ret:
        print("邮件发送成功")
    else:
        print("邮件发送失败")
    print("show time after 600 seconds:")
    timming_exe("echo %time%", 600)

四、实施过程:关键配置说明

4.1 三个邮箱参数

my_sender = '发件人邮箱(你的QQ邮箱)'
my_user   = '收件人邮箱(目标接收邮箱)'
my_pass   = '发件人邮箱的授权码'

4.2 授权码获取步骤

QQ邮箱 → 设置 → 账号 → 开启POP3/SMTP服务 → 生成授权码

开启 SMTP 服务后,QQ 邮箱会生成一段授权码(如 16 位字母),填入 my_pass 即可。

4.3 运行与验证

程序点击运行 → 控制台输出"邮件发送成功"
邮箱查看 → 邮件正常发送并接收到,主题为"家庭服务器IP报告信息"

五、应用价值

六、SEO关键词

Python脚本、外网IP、QQ邮箱、自动发邮件、smtplib、requests、sched定时、IP监控、家庭服务器、Python实例

推荐阅读

更多工业 AI、智能制造与技术实践文章

机器人自动化

TRIO-Basic 从入门到精通(五):直线与圆弧插补指令的使用

本文讲解 TRIO-Basic 三大运动指令:MOVE 相对移动、MOVEABS 绝对移动与 MOVECIRC 平面圆弧插补,给出各自的语法格式、完整可运行的代码示例(含轴参数段与矩形圆角轮廓插补示例),并说明增益参数的使用前提,帮助开发者快速上手多轴轨迹编程。

机器人自动化

TRIO-Basic 从入门到精通(二十):Trio通过空间圆弧三点计算圆弧中心和半径

本文用TRIO-Basic手写实现空间圆弧三点求圆心与半径算法:由三点确定圆弧平面法向量,求两条中垂线交点得到圆心并输出半径,与Trio原装SPHERE_CENTRE指令计算结果对比一致,适用于空间圆弧插补与轨迹规划。

C#调用Intel NPU实现YOLOv26极速推理:OpenVINO工业视觉加速实践

通过C# + OpenVINO Runtime调用Intel Core Ultra NPU运行YOLOv26模型,实现低功耗、毫秒级的工业边缘AI视觉推理,涵盖模型导出、环境配置、推理代码与FP16/INT8/异步推理等性能优化实践。

C#工业视觉平台结合YOLOv26与OpenVINO

从数据标注、自动训练到Intel NPU边缘推理的完整工业AI方案:C#工业软件平台 + YOLOv26训练框架 + OpenVINO模型转换 + Intel NPU边缘推理,实现图像采集、自动标注、模型训练到现场推理的完整AI视觉闭环。

工业互联网

MY-BASIC 应用(一):轻量级嵌入式 BASIC 解析器介绍

MY-BASIC 是一个用标准 C 语言编写的轻量级 BASIC 解释器:不足 128KB 内存占用、可嵌入可扩展、支持原型编程与 Lambda 函数式编程、Unicode、列表/字典集合,适合嵌入式设备脚本化控制。

工业互联网

Linux系统篇(七)——工具篇(二):一篇搞懂 C 语言程序从代码到可执行文件的完整旅程

拆解 C 程序预处理、编译、汇编、链接四步变身流程,讲透条件编译与静态、动态链接差异,附分步实操与报错排查。

评论(0)