无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8471|回复: 126
打印 上一主题 下一主题

[原创] 一个获取电脑自身公网ip并发送到你自己的邮箱的服务程序

    [复制链接]
跳转到指定楼层
1#
发表于 2023-11-14 13:03:57 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 ShareBit 于 2025-2-2 00:10 编辑

在cmd.exe 管理员权限的命令行环境下
安装服务:
ipnotify -install

运行服务:
ipnotify -start

停止服务:
ipnotify -stop

卸载服务:
ipnotify -uninstall

要正确配置与ipnotify 处于同一目录下的 ipnotify.ini文件

[ipnotify]
smtpservername = smtp.qq.com
smtpserverport = 465
securitytype = SSL
account = 10000@qq.com
password = 你的邮箱授权码
sendermail = 10000@qq.com
recipient = 10000@qq.com
mailtitle = "这是我家里的电脑最新IP地址列表"
sleeptime = 300
appendallnetcardip = 1

useipify4 = 1
useipify6 = 1

参数说明:
smtpservername 是 发送邮件的smtp服务器地址
smtpserverport 是发送邮件的smtp服务器的端口
securitytype 合法值为  None, TLS, SSL,这三者之一,需要根据smtp服务器说明进行配置
account 是登录smtp服务器的账号(一般与发件人邮箱相同)
password 是登录smtp服务器的密码,他不一定是发件人的邮箱密码,有可能是授权码,需要根据smtp服务器说明进行配置
sendermail 是发件人邮箱
recipient 是收件人邮箱,如果你不想使用两个邮箱,那么也可以自己发送邮件给自己,也就是这个设置可以与 sendermail 设置为相同
mailtitle 邮件标题,一般用于描述电脑,用于区分是哪一台电脑发送过来的邮件
sleeptime 单位是秒,是轮询检测公网ip地址变化的间隔时间
appendallnetcardip 有效值可以是0,也可以是1,用于说明在发送邮件的时候是否同时把网卡的所有ip地址,也就是包括局域网ip地址信息也叠加到邮件内容里面去

useipify4 有效值可以是0,也可以是1,用于说明是否通过访问 api.ipify.org 去获取电脑的公网ipv4地址
useipify6 有效值可以是0,也可以是1,用于说明是否通过访问 api64.ipify.org 去获取电脑的公网ipv6地址

如果电脑网卡本身有动态公网ipv4或ipv6, 那么useipify4和useipify6可以设置为0,也就是不用去访问外网来获得自己的公网ip信息

配置文件修改之后,需要停止服务,再次开启服务才会生效。只有检测到公网ip发生变化才会发送邮件,一直没变化,就一直不会再次发送。本软件支持从windows xp开始的后续所有windows系统。本软件对应的服务名称是 IPNotify,  服务描述是 ShareBit IPNotify Service

如果使用QQ邮箱,那么只需要去获得邮箱授权码并修改
account = 10000@qq.com
password = 你的邮箱授权码
sendermail = 10000@qq.com
recipient = 10000@qq.com
这几行,别的不用做修改

结果大致如下:


软件下载地址: http://www.qqsdk.com/ipnotify/ipnotify.zip

更新日志:
2023年11月15日 14:40  修改前面版本,在网卡既没有公网ipv4也没有公网ipv6的情况下,被我误判为没有公网ip,从而导致没发送邮件。

2023年11月15日 16:30  配置文件里面增加 appendallnetcardip = 1 选项,让用户自行决定是否邮件内容里面带所有的网卡ip地址,也就是局域网ip地址。

2024年09月24日 16:30  紧急修改。 请重新下载,并停止服务后覆盖 ipnotify.exe, 然后重新开始这个服务。这几天出现:使用QQ邮箱,由于QQ邮件服务器在断开的时候没有反馈回正确的信息,导致这个服务不断的异常退出,然后服务又自己执行起来,执行起来之后再次发送邮件,又继续异常, 不断往复,所以就不断的发送邮件,又接收到邮件。之前的已经配置好的ipnotify.ini不要覆盖,仅仅只需要覆盖ipnotify.exe即可。

2025年01月14日 17:00 特别提醒:这是一个32位程序,如果放到64位windows系统的system32系统目录下,会导致服务无法正常启动,会提示 "系统找不到指定的文件", 所以请一定不要放在64位操作系统的system32系统目录下。

2025年1月25日 22:00
之前程序内部获取自身ipv4公网地址所请求的网址api.ipify.org,看起已经无法正常访问了,从而导致没获取到自身的ipv4公网地址,这次修改为使用v4.ident.me去获取。请重新下载后,停止之前的服务,解压出来只需要覆盖ipnotify.exe后再开始服务即可。

2025年1月26日 01:30
再次改进为ipv4和ipv6的外网ip的获取分别内置了4个网址,避免某些网络环境下屏蔽了部分网站而导致获取失败

2025年1月29日 02:30
在邮件末尾增加了一行邮件产生的时间,大致这样:本邮件生成于 2025.01.29 02:21:45
同时,如果邮件发送失败,会在windows系统的“事件查看器"里面的"Windows 日志" 的 "应用程序" 里面,来源为"ShareBit IPNotify Service" 里面可以查看到信息。

2025.01.30 22:22
再次修改为:内部只要判断邮件发送失败,会延迟1分钟后再重新发送,直到发送成功为止。

2025.01.31 22:56
前面不知道哪一个时候,由于键盘不受控,在我不知情的情况下删除了一行代码,从而导致数据没发送,也就导致邮件永远不会发送成功,已经修改了。

2025.02.02 00:00
修改为:邮件发送失败不再产生Windows事件日志。因为正常情况下不会有发送失败的日志,而不正常的情况下可能较高频率产生很多日志。


评分

参与人数 3无忧币 +15 收起 理由
htmlc4 + 5
BEIKING + 5 非常棒
董大 + 5 赞一个!

查看全部评分

128#
发表于 5 天前 来自手机 | 只看该作者
好工具,有个提议,能否支持一下推送加或者server酱,更方便。
回复

使用道具 举报

127#
发表于 5 天前 | 只看该作者
谢谢分享,试试
回复

使用道具 举报

126#
 楼主| 发表于 5 天前 | 只看该作者
lmg0109 发表于 2025-2-2 00:55
您说:发送邮件失败最好是不产生日志
但之前这个版本的功能希望还保留!见下面:
2025.01.30 22:22

是的,发送失败会间隔一分钟(如果是发送或者接收数据失败,则大约一共是6分钟)继续发送,只是邮件发送失败不再写windows事件日志了。
回复

使用道具 举报

125#
发表于 5 天前 | 只看该作者
ShareBit 发表于 2025-2-2 00:48
2025.02.02 00:00
修改为:邮件发送失败不再产生Windows事件日志。因为正常情况下不会有发送失败的日志, ...

您说:发送邮件失败最好是不产生日志
但之前这个版本的功能希望还保留!见下面:
2025.01.30 22:22
再次修改为:内部只要判断邮件发送失败,会延迟1分钟后再重新发送,直到发送成功为止。

点评

是的,发送失败会间隔一分钟(如果是发送或者接收数据失败,则大约一共是6分钟)继续发送,只是邮件发送失败不再写windows事件日志了。  详情 回复 发表于 5 天前
回复

使用道具 举报

124#
 楼主| 发表于 5 天前 | 只看该作者
2025.02.02 00:00
修改为:邮件发送失败不再产生Windows事件日志。因为正常情况下不会有发送失败的日志,而不正常的情况下可能较高频率产生很多日志。
回复

使用道具 举报

123#
发表于 5 天前 | 只看该作者
本帖最后由 lmg0109 于 2025-2-2 00:47 编辑
ShareBit 发表于 2025-2-1 23:50
这是邮件产生的时间,这个时间是不会改变的,比如说开机后就会产生邮件,就有了这一封邮件的生成时间,但 ...

错误ID时间:22:48:28(收到邮件正文尾部生成时间与此时间相同,邮件时间显示为22:49,不显示到秒)

邮件被收到的时间,就是上面括号内后面的22:49,因为邮件的详情中不显示到秒,所以看不到具体的秒数。

由此看来,生成的这个错误ID时间与邮件被收到的时间相差并不大!
回复

使用道具 举报

122#
 楼主| 发表于 6 天前 | 只看该作者
本帖最后由 ShareBit 于 2025-2-1 23:53 编辑
lmg0109 发表于 2025-2-1 23:42
级别        日期和时间        来源        事件 ID        任务类别
信息        2025-02-01 22:48:28(收到邮件正文尾部生成时间与此时间 ...

这是邮件产生的时间,这个时间是不会改变的,比如说开机后就会产生邮件,就有了这一封邮件的生成时间,但是真正发送出去则可能是几天之后。 我现在问的是:究竟什么时候发送出去的? 也就是看邮件详情或者看邮件被收到的那个时间。 因为这个问题本质是:某一些资源没有被初始化完整或者说有一些相关的东西没准备充分,从而导致了发送失败,但这个充分完整需要多久呢? 这就是产生日志与接收到邮件这个时间差。 如果相差一分钟或者几分钟,那么这个日志信息最好的做法就是没有,也就是发送邮件失败最好是不产生日志,因为程序正确,你看到了这个发送失败的日志是多余的,毫无意义的,无法改变的,属于测试阶段有点用,但实际使用可能有副作用(比如说一直没联网,那么一天就有很多条发送失败的日志)
回复

使用道具 举报

121#
发表于 6 天前 | 只看该作者
ShareBit 发表于 2025-2-1 23:05
产生 Error: Undefined error id. 的事件时间,与实际第一封邮件被收到,大约间隔多久? 是1分钟还是几分 ...

级别        日期和时间        来源        事件 ID        任务类别
信息        2025-02-01 22:48:28(收到邮件正文尾部生成时间与此时间相同,邮件时间显示为22:49,不显示到秒)        ShareBit IPNotify Service        16        无        Error: Undefined error id.
.
信息        2025-02-01 22:48:25        ShareBit IPNotify Service        1        无        """ShareBit IPNotify Service"" started successfully."
信息        2025-02-01 22:39:42(收到邮件正文尾部生成时间与此时间相同,邮件时间显示为22:40,不显示到秒)        ShareBit IPNotify Service        16        无        Error: Undefined error id.
.
信息        2025-02-01 22:39:41        ShareBit IPNotify Service        1        无        """ShareBit IPNotify Service"" started successfully."

点评

这是邮件产生的时间,这个时间是不会改变的,比如说开机后就会产生邮件,就有了这一封邮件的生成时间,但是真正发送出去则可能是几天之后。 我现在问的是:究竟什么时候发送出去的? 也就是看邮件详情或者看邮件被收  详情 回复 发表于 6 天前
回复

使用道具 举报

120#
 楼主| 发表于 6 天前 | 只看该作者
lmg0109 发表于 2025-2-1 22:10
感谢楼主尽善尽美!辛苦了!
经测试最新版本,重启后日志记录依然会产生一个未定义的错误id
...

产生 Error: Undefined error id. 的事件时间,与实际第一封邮件被收到,大约间隔多久? 是1分钟还是几分钟?
回复

使用道具 举报

119#
发表于 6 天前 | 只看该作者
谢谢分享,备用
回复

使用道具 举报

118#
发表于 6 天前 | 只看该作者
本帖最后由 lmg0109 于 2025-2-1 22:58 编辑
lmg0109 发表于 2025-2-1 10:36
感谢楼主及时更新!

修正后的版本,在关机后再开机能正常发送邮件!

感谢楼主尽善尽美!辛苦了!
经测试最新版本,重启后日志记录依然会产生一个未定义的错误id
如果不好解决,请楼主忽略!我仅是反馈一下结果,谢谢!
日志记录如下:

级别        日期和时间        来源        事件 ID        任务类别
信息        2025-02-01 22:48:28        ShareBit IPNotify Service        16        无        Error: Undefined error id.
.
信息        2025-02-01 22:48:25        ShareBit IPNotify Service        1        无        """ShareBit IPNotify Service"" started successfully."

信息        2025-02-01 22:39:42        ShareBit IPNotify Service        16        无        Error: Undefined error id.
.
信息        2025-02-01 22:39:41        ShareBit IPNotify Service        1        无        """ShareBit IPNotify Service"" started successfully."

点评

产生 Error: Undefined error id. 的事件时间,与实际第一封邮件被收到,大约间隔多久? 是1分钟还是几分钟?  详情 回复 发表于 6 天前
回复

使用道具 举报

117#
 楼主| 发表于 6 天前 | 只看该作者
dyc086 发表于 2025-2-1 14:30
作者你是内置了哪4个网址,有些网址需要添加一下直连。

char* ipV4Servers[] = {"icanhazip.com", "ifconfig.me", "whatismyip.akamai.com", "v4.ident.me"};
char* ipV6Servers[] = {"icanhazip.com", "ifconfig.me", "v6.ident.me", "api64.ipify.org"};
回复

使用道具 举报

116#
发表于 6 天前 | 只看该作者
ShareBit 发表于 2025-1-26 01:32
2025年1月26日 01:30
再次改进为ipv4和ipv6的外网ip的获取分别内置了4个网址,避免某些网络环境下屏蔽了部 ...

作者你是内置了哪4个网址,有些网址需要添加一下直连。

点评

char* ipV4Servers[] = {"icanhazip.com", "ifconfig.me", "whatismyip.akamai.com", "v4.ident.me"}; char* ipV6Servers[] = {"icanhazip.com", "ifconfig.me", "v6.ident.me", "api64.ipify.org"};  详情 回复 发表于 6 天前
回复

使用道具 举报

115#
发表于 6 天前 | 只看该作者
20250131发的版本终于可以公网IP改变正常发送邮件了
回复

使用道具 举报

114#
发表于 6 天前 | 只看该作者
楼主辛苦了
回复

使用道具 举报

113#
发表于 6 天前 | 只看该作者
领教了
回复

使用道具 举报

112#
 楼主| 发表于 6 天前 | 只看该作者
本帖最后由 ShareBit 于 2025-2-1 12:02 编辑
lmg0109 发表于 2025-2-1 10:36
感谢楼主及时更新!

修正后的版本,在关机后再开机能正常发送邮件!

虽然这个不算是一个问题,但我还是又改了一下。 根据你的日志,大体猜测是第一次执行到发送邮件那个位置太快了一点,有可能有某种未知的东西(操作系统级的而不是我软件内部的资源)没得到初始化之类的,所以我在第一次的时候加上了10秒的延迟,然后才开始测试ip地址和后续的发送邮件。
回复

使用道具 举报

111#
发表于 6 天前 | 只看该作者
ShareBit 发表于 2025-1-31 22:55
已经破案了,前面不知道哪个时候,我的键盘有点不受控,我自己也没太留意,但却导致了删除了一行代码,而 ...

感谢楼主及时更新!

修正后的版本,在关机后再开机能正常发送邮件!

直接重启电脑,有时日志记录会产生一个未定义的错误ID,但至少等会能收到邮件。
日志记录如下:
级别        日期和时间        来源        事件 ID        任务类别
信息        2025-02-01 10:06:22        ShareBit IPNotify Service        16        无        Error: Undefined error id.
.
信息        2025-02-01 10:06:21        ShareBit IPNotify Service        1        无        """ShareBit IPNotify Service"" started successfully."

点评

虽然这个不算是一个问题,但我还是有改了一下。 根据你的日志,大体猜测是第一次执行到发送邮件那个位置太快了一点,有可能有某种未知的东西没得到初始化之类的,所以我在第一次的时候加上了10秒的延迟,然后才开始  详情 回复 发表于 6 天前
回复

使用道具 举报

110#
 楼主| 发表于 7 天前 | 只看该作者
lmg0109 发表于 2025-1-31 16:39
感谢楼主回复!经查网络没问题,我是通过向日葵客户端连在远程电脑上,能连代表网络没问题!
邮件服务器 ...

已经破案了,前面不知道哪个时候,我的键盘有点不受控,我自己也没太留意,但却导致了删除了一行代码,而我完全不知道。 刚才我自测发现确实不发送邮件,对照代码之后,才发现了这一点,已经修改了,重新下载使用。 至于后面的那一个6分钟的事情,与你设置的那个300秒是没关系的,而是我内部的发送和接收设置了一个5分钟的超时时间,前面那个等于是我没发送数据出去,但却等着接收数据,这显然是错误的。
回复

使用道具 举报

109#
发表于 7 天前 | 只看该作者
本帖最后由 lmg0109 于 2025-1-31 22:26 编辑
ShareBit 发表于 2025-1-31 11:23
你反馈的问题,在正常的网络和邮件服务之下,从来就不应该存在。 但既然存在了,你应该着手看看你自己的 ...

感谢楼主回复!经查网络没问题,我是通过向日葵客户端连在远程电脑上,能连代表网络没问题!
邮件服务器我也测试了,我使用的qq邮箱,发了一份邮件给自己也没问题!
在升级这个最新版本之前,关机后重新开机倒是能发邮件的。

最新版本如果没发成功,每隔1分钟不断重发,我这边查了应用程序日志,每笔日志信息确实是间隔了(sleeptime+1)分钟,只不过我的论坛账号为新用户,无法上传截图。

当直接重启电脑时,又多了一个错误信息:Error: SSL problem.

★以下为关机后再开机产生的日志记录(sleeptime为5分钟):
级别        日期和时间        来源        事件 ID        任务类别
信息        2025-01-31 22:07:21        ShareBit IPNotify Service        16        无        Error: Undefined xyz SMTP response.
.
信息        2025-01-31 22:01:20        ShareBit IPNotify Service        16        无        Error: Undefined xyz SMTP response.
.
信息        2025-01-31 21:55:20        ShareBit IPNotify Service        16        无        Error: Undefined error id.
.
信息        2025-01-31 21:55:20        ShareBit IPNotify Service        1        无        """ShareBit IPNotify Service"" started successfully."

★以下为直接重启电脑产生的日志记录(sleeptime为5分钟):
级别        日期和时间        来源        事件 ID        任务类别
信息        2025-01-31 22:20:18        ShareBit IPNotify Service        16        无        Error: Undefined xyz SMTP response.
.
信息        2025-01-31 22:14:18        ShareBit IPNotify Service        16        无        Error: SSL problem.
.
信息        2025-01-31 22:08:55        ShareBit IPNotify Service        1        无        """ShareBit IPNotify Service"" started successfully."








回复

使用道具 举报

108#
发表于 7 天前 | 只看该作者
ShareBit 发表于 2025-1-31 09:09
这个软件最大的作用是:可以通过动态公网ipv6来进行直连,但是这得需要你能懂光猫和路由器技术,能得到动 ...

感谢,我明白了。
回复

使用道具 举报

107#
 楼主| 发表于 7 天前 | 只看该作者
lmg0109 发表于 2025-1-31 10:43
报告楼主,最新版本,除了之前的错误:Error: Undefined error id.,
又多了这个错误代码:Error: Undefin ...

你反馈的问题,在正常的网络和邮件服务之下,从来就不应该存在。 但既然存在了,你应该着手看看你自己的网络和发件邮箱服务器。 绝不可能是6分钟,必须是每一分钟重发,直到成功。 一旦出现了重发,那么会直接绕开设置的sleeptime,而再次快速检测ip是否变化,如果变化了,那么会再次很快发送。 比如说,开机后100分钟之内都没能发送成功,那么我只检测了一次ip变化,但是发送却执行了100次,第100次成功后,马上就会再次检测是否ip变化了(没经过sleeptime).  只有一次性发送成功,才会执行sleeptime
回复

使用道具 举报

106#
发表于 7 天前 | 只看该作者
感谢分享
回复

使用道具 举报

105#
发表于 7 天前 | 只看该作者
本帖最后由 lmg0109 于 2025-1-31 10:57 编辑

报告楼主,最新版本,除了之前的错误:Error: Undefined error id.,
又多了这个错误代码:Error: Undefined xyz SMTP response.
而且如果发送失败后延时1分钟再次发送,是在sleeptime的基础上再加1分钟,如果sleeptime是5分钟,则6分钟以后才重新发送

不能正常发送邮件!

回复

使用道具 举报

104#
发表于 7 天前 | 只看该作者
感谢楼主及时更新!祝楼主新春快乐、幸福安康!
回复

使用道具 举报

103#
 楼主| 发表于 7 天前 | 只看该作者
dvs909 发表于 2025-1-30 23:28
楼主我问下这个软件获取到公网ip后,是不是可以做内网穿透用,让外面的可以访问我的服务。

这个软件最大的作用是:可以通过动态公网ipv6来进行直连,但是这得需要你能懂光猫和路由器技术,能得到动态公网ipv6(本身存在,但你得配合光猫和路由器的设置),以及得到了动态公网ipv6后,你还得在路由器的防火墙策略里面去放行对内部动态公网ipv6的访问,然后你就可以基于动态公网ipv6地址进行直连的。不过好处也是很明显的:只要懂技术,就能走通,无额外的成本投入,而且是永久有效。
回复

使用道具 举报

102#
发表于 2025-1-30 23:28:47 | 只看该作者
楼主我问下这个软件获取到公网ip后,是不是可以做内网穿透用,让外面的可以访问我的服务。
回复

使用道具 举报

101#
 楼主| 发表于 2025-1-30 22:22:24 | 只看该作者
2025.01.30 22:22
再次修改为:内部只要判断邮件发送失败,会延迟1分钟后再重新发送,直到发送成功为止。
回复

使用道具 举报

100#
发表于 2025-1-30 21:10:35 | 只看该作者
楼主请问下,此软件不支持局域网的机器吗?就是通过路由器上网,机器网卡获取到的是局域网IP,一开始启动服务是可以正常发送邮件的,然后我直接在路由里断开公网连接再重连,公网IP已经改变,但机器并没有发送邮件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-2-7 06:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表