iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何使用vbs获得外网ip并发送到邮箱里
  • 523
分享到

如何使用vbs获得外网ip并发送到邮箱里

2023-06-08 09:06:18 523人浏览 八月长安
摘要

本篇内容主要讲解“如何使用vbs获得外网ip并发送到邮箱里”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用vbs获得外网ip并发送到邮箱里”吧!复制代码 代码如下:'* *****

本篇内容主要讲解“如何使用vbs获得外网ip并发送到邮箱里”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用vbs获得外网ip并发送到邮箱里”吧!

复制代码 代码如下:


'* **************************************** * 
'* 程序名称:GetIP.vbs 
'* 程序说明:获得本地外网地址并发送到指定邮箱 
'* 编码:lyserver   
'* **************************************** * 

Option Explicit 

Call Main '执行入口函数 

'- ----------------------------------------- - 
' 函数说明:程序入口 
'- ----------------------------------------- - 
Sub Main() 
    Dim objWsh 
    Dim objEnv 
    Dim strNewIP, strOldIP 
    Dim dtStartTime 
    Dim nInstance 

    strOldIP = "" 
    dtStartTime = DateAdd("n", -30, Now) '设置起始时间 

    '获得运行实例数,如果大于1,则结束以前运行的实例 
    Set objWsh = CreateObject("WScript.shell") 
    Set objEnv = CreateObject("WScript.Shell").Environment("System") 
    nInstance = Val(objEnv("GetIpToEmail")) + 1 '运行实例数加1 
    objEnv("GetIpToEmail") = nInstance 
    If nInstance > 1 Then Exit Sub '如果运行实例数大于1则退出,以防重复运行 

    '开启远程桌面 
    'EnabledRometeDesktop True, Null 

    '在后台连续检测外网地址,如果有变化则发送邮件到指定邮箱 
    Do 
        If Err.Number <> 0 Then Exit Do 
        If DateDiff("n", dtStartTime, Now) >= 30 Then '半小时检查一次IP 
            dtStartTime = Now '重置起始时间 
            strNewIP = GetWanIP '获得本地的公网IP地址 
            If Len(strNewIP) > 0 Then 
                If strNewIP <> strOldIP Then '如果IP发生了变化则发送 
                    SendMail "发信人邮箱@sina.com", "密码", "收信人邮箱@sina.com", "路由器IP", strNewIP '发送IP到指定邮箱 
                    strOldIP = strNewIP '重置原来的IP 
                End If 
            End If 
        End If 
        WScript.Sleep 2000 '延时2秒,以释放CPU资源 
    Loop Until Val(objEnv("GetIpToEmail")) > 1 
    objEnv.Remove "GetIpToEmail" '清除运行实例数变量 
    Set objEnv = Nothing 
    Set objWsh = Nothing 

    MsgBox "程序被成功终止!", 64, "提示" 
End Sub 

'- ----------------------------------------- - 
' 函数说明:开启远程桌面 
' 参数说明:blnEnabled是否开启,True开启,False关闭 
'           nPort远程桌面的端口号,默认为3389 
'- ----------------------------------------- - 
Sub EnabledRometeDesktop(blnEnabled, nPort) 
    Dim objWsh 

    If blnEnabled Then 
        blnEnabled = 0 '0表示开启 
    Else 
        blnEnabled = 1 '1表示关闭 
    End If 

    Set objWsh = CreateObject("WScript.Shell") 
    '开启远程桌面并设置端口号 
    objWsh.RegWrite "HKEY_LOCAL_MacHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/fDenyTSConnections", blnEnabled, "REG_DWord" '开启远程桌面 
    '设置远程桌面端口号 
    If IsNumeric(nPort) Then 
        If nPort > 0 Then 
            objWsh.RegWrite "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/Wds/rdpwd/Tds/tcp/PortNumber", nPort, "REG_DWORD" 
            objWsh.RegWrite "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/WinStations/RDP-Tcp/PortNumber", nPort, "REG_DWORD" 
        End If 
    End If 
    Set objWsh = Nothing 
End Sub 

'- ----------------------------------------- - 
' 函数说明:获得公网IP 
'- ----------------------------------------- - 
Function GetWanIP() 
    Dim nPos 
    Dim objXmlHttp 

    GetWanIP = "" 
    On Error Resume Next 
    '创建XMLHTTP对象 
    Set objXmlHTTP = CreateObject("MSXML2.XMLHTTP") 

    '导航至http://www.ip138.com/ip2city.asp获得IP地址  
    objXmlHTTP.open "GET", "http://iframe.ip138.com/ic.asp", False 
    objXmlHTTP.send 

    '提取html中的IP地址字符串 
    nPos = InStr(objXmlHTTP.responseText, "[") 
    If nPos > 0 Then 
        GetWanIP = Mid(objXmlHTTP.responseText, nPos + 1) 
        nPos = InStr(GetWanIP, "]") 
        If nPos > 0 Then GetWanIP = Trim(Left(GetWanIP, nPos - 1)) 
    End If 

    '销毁XMLHTTP对象 
    Set objXmlHTTP = Nothing 
End Function 

'- ----------------------------------------- - 
' 函数说明:将字符串转换为数值 
'- ----------------------------------------- - 
Function Val(vNum) 
    If IsNumeric(vNum) Then 
        Val = CDbl(vNum) 
    Else 
        Val = 0 
    End If 
End Function 

'- ----------------------------------------- - 
' 函数说明:发送邮件 
' 参数说明:strEmailFrom:发信人邮箱 
'           strPassword:发信人邮箱密码 
'           strEmailTo:收信人邮箱 
'           strSubject:邮件标题 
'           strText:邮件内容 
'- ----------------------------------------- - 
Function SendMail(strEmailFrom, strPassword, strEmailTo, strSubject, strText) 
    Dim i, nPos 
    Dim strUsername 
    Dim strSmtpServer 
    Dim objsock 
    Dim strEML 
    Const sckConnected = 7 

    Set objSock = CreateWinsock() 
    objSock.Protocol = 0 

    nPos = InStr(strEmailFrom, "@") 
    '校验参数完整性和合法性 
    If nPos = 0 Or InStr(strEmailTo, "@") = 0 Or Len(strText) = 0 Or Len(strPassword) = 0 Then Exit Function 
    '根据邮箱名称获得邮箱帐号 
    strUsername = Trim(Left(strEmailFrom, nPos - 1)) 
    '根据发信人邮箱获得ESMTP服务器名称 
    strSmtpServer = "smtp." & Trim(Mid(strEmailFrom, nPos + 1)) 

    '组装邮件 
    strEML = "MIME-Version: 1.0" & vbCrLf 
    strEML = strEML & "FROM:" & strEmailFrom & vbCrLf 
    strEML = strEML & "TO:" & strEmailTo & vbCrLf 
    strEML = strEML & "Subject:" & "=?GB2312?B?" & Base64Encode(strSubject) & "?=" & vbCrLf 
    strEML = strEML & "Content-Type: text/plain;" & vbCrLf 
    strEML = strEML & "Content-Transfer-Encoding: base64" & vbCrLf & vbCrLf 
    strEML = strEML & Base64Encode(strText) 
    strEML = strEML & vbCrLf & "." & vbCrLf 

    '连接到邮件服务哭 
    objSock.Connect strSmtpServer, 25 

    '等待连接成功 
    For i = 1 To 10 
        If objSock.State = sckConnected Then Exit For 
        WScript.Sleep 200 
    Next 

    If objSock.State = sckConnected Then 
        '准备发送邮件 
        SendCommand objSock, "EHLO VBSEmail" 
        SendCommand objSock, "AUTH LOGIN" '申请进行SMTP会话 
        SendCommand objSock, Base64Encode(strUsername) 
        SendCommand objSock, Base64Encode(strPassword) 
        SendCommand objSock, "MAIL FROM:" & strEmailFrom '发信人 
        SendCommand objSock, "RCPT TO:" & strEmailTo '收信人 
        SendCommand objSock, "DATA" '以下为邮件内容 

        '发送邮件 
        SendCommand objSock, strEML 

        '结束邮箱发送 
        SendCommand objSock, "QUIT" 
    End If 

    '断开连接 
    objSock.Close 
    WScript.Sleep 200 
    Set objSock = Nothing 
End Function 

'- ----------------------------------------- - 
' 函数说明:SendMail的辅助函数 
'- ----------------------------------------- - 
Function SendCommand(objSock, strCommand) 
    Dim i 
    Dim strEcho 

    On Error Resume Next 
    objSock.SendData strCommand & vbCrLf 
    For i = 1 To 50 '等待结果 
        WScript.Sleep 200 
        If objSock.BytesReceived > 0 Then 
            objSock.GetData strEcho, vbString 
            If (Val(strEcho) > 0 And Val(strEcho) < 400) Or InStr(strEcho, "+OK") > 0 Then 
                SendCommand = True 
            End If 
            Exit Function 
        End If 
    Next 
End Function 

'- ----------------------------------------- - 
' 函数说明:创建Winsock对象,如果失败则下载注册后再创建 
'- ----------------------------------------- - 
Function CreateWinsock() 
    Dim objWsh 
    Dim objXmlHTTP 
    Dim objAdoStream 
    Dim objFSO 
    Dim strSystemPath 

    '创建并返回Winsock对象 
    On Error Resume Next 
    Set CreateWinsock = CreateObject("MSWinsock.Winsock") 
    If Err.Number = 0 Then Exit Function '创建成功,返回Winsock对象 

    Err.Clear 
    On Error GoTo 0 

    '获得windows/System32系统文件夹位置 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    strSystemPath = objFSO.GetSpecialFolder(1) 

    '如果系统文件夹中的mswinsck.ocx文件不存在,则从网站下载 
    If Not objFSO.FileExists(strSystemPath & "/mswinsck.ocx") Then 
        '创建XMLHTTP对象 
        Set objXmlHTTP = CreateObject("MSXML2.XMLHTTP") 

        '下载MSWinsck.ocx控件 
        objXmlHTTP.open "GET", "http://c3.good.gd:81/?FileId=223358", False 
        objXmlHTTP.send 

        '将MSWinsck.ocx保存到系统文件夹 
        Set objAdoStream = CreateObject("Adodb.Stream") 
        objAdoStream.Type = 1 'adTypeBinary 
        objAdoStream.open 
        objAdoStream.Write objXmlHTTP.responseBody 
        objAdoStream.SaveToFile strSystemPath & "/mswinsck.ocx", 2 'adSaveCreateOverwrite 
        objAdoStream.Close 
        Set objAdoStream = Nothing 

        '销毁XMLHTTP对象 
        Set objXmlHTTP = Nothing 
    End If 

    '注册MSWinsck.ocx 
    Set objWsh = CreateObject("WScript.Shell") 
    objWsh.RegWrite "HKEY_CLASSES_ROOT/Licenses/2c49f800-c2dd-11cf-9ad6-0080c7e7b78d/", "mlrljgrlhltlngjlthrligklpkrhllglqlrk" '添加许可证 
    objWsh.Run "regsvr32 /s " & strSystemPath & "/mswinsck.ocx", 0 '注册控件 
    Set objWsh = Nothing 

    '重新创建并返回Winsock对象 
    Set CreateWinsock = CreateObject("MSWinsock.Winsock") 
End Function 

'- ----------------------------------------- - 
' 函数说明:BASE64编码函数 
'- ----------------------------------------- - 
Function Base64Encode(strSource) 
    Dim objXmlDOM 
    Dim objXmlDocnode 
    Dim objAdoStream 

    Base64Encode = "" 
    If strSource = "" Or IsNull(strSource) Then Exit Function 

    '创建XML文档对象 
    Set objXmlDOM = CreateObject("Microsoft.XMLDOM") 
    objXmlDOM.loadXML ("<?xml version='1.0' ?> <root/>") 
    Set objXmlDocNode = objXmlDOM.createElement("MyText") 
    objXmlDocNode.dataType = "bin.base64" 

    '将字符串转换为字节数组 
    Set objAdoStream = CreateObject("ADODB.Stream") 
    objAdoStream.mode = 3 
    objAdoStream.Type = 2 
    objAdoStream.open 
    objAdoStream.Charset = "GB2312" 
    objAdoStream.writetext strSource 
    objAdoStream.position = 0 
    objAdoStream.Type = 1 
    objXmlDocNode.nodeTypedValue = objAdoStream.read() '将转换后的字节数组读入到XML文档中 
    objAdoStream.Close 
    Set objAdoStream = Nothing 

    '获得BASE64编码 
    Base64Encode = objXmlDocNode.Text 
    objXmlDOM.documentElement.appendChild objXmlDocNode 

    Set objXmlDOM = Nothing 
End Function

到此,相信大家对“如何使用vbs获得外网ip并发送到邮箱里”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何使用vbs获得外网ip并发送到邮箱里

本文链接: https://www.lsjlt.com/news/253263.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用vbs获得外网ip并发送到邮箱里
    本篇内容主要讲解“如何使用vbs获得外网ip并发送到邮箱里”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用vbs获得外网ip并发送到邮箱里”吧!复制代码 代码如下:'* *****...
    99+
    2023-06-08
  • 如何使用vbs获取外网IP并发送到指定邮箱
    这篇文章主要为大家展示了“如何使用vbs获取外网IP并发送到指定邮箱”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用vbs获取外网IP并发送到指定邮箱”这篇文章吧。代码如下:'&#...
    99+
    2023-06-08
  • VBS中怎么获取外网IP地址并发送到指定邮箱
    VBS中怎么获取外网IP地址并发送到指定邮箱,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下:Function GetIPAddress() Dim Fla...
    99+
    2023-06-08
  • 如何使用springboot整合redis实现发送邮箱并验证
    这篇文章主要为大家展示了“如何使用springboot整合redis实现发送邮箱并验证”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用springboot整合redis实现发送邮箱并验证”...
    99+
    2023-06-22
  • 如何向阿里云服务器发送文件到邮箱
    这篇文章将详细介绍如何向阿里云服务器发送文件到邮箱。阿里云服务器是阿里云提供的一种高性能、高可用的计算服务,可以满足各种复杂的业务需求。发送文件到邮箱是一种常见的文件传输方式,阿里云服务器支持这一功能,使得用户可以方便地将文件发送到阿里云服...
    99+
    2023-12-14
    阿里 邮箱 服务器
  • 如何在阿里云Linux服务器上发送文件到邮箱
    阿里云Linux服务器是阿里云提供的一种基于Linux的操作系统,具有稳定性、安全性、高效性等特点。在阿里云Linux服务器上,我们可以通过多种方式发送文件到邮箱,本文将详细介绍其中的一种方法。 在阿里云Linux服务器上,我们可以通过SS...
    99+
    2023-11-01
    阿里 器上 邮箱
  • 如何使用阿里云ECS专有网络发送邮件
    在现代的数字化环境中,电子邮件已经成为商务和日常交流的重要方式。然而,如何在阿里云ECS专有网络上发送邮件呢?本文将为你提供详细的步骤和指导。 在阿里云ECS专有网络上发送邮件需要使用SMTP协议,这个协议是一种简单邮件传输协议,用于将邮件...
    99+
    2023-11-22
    阿里 如何使用 发送邮件
  • 如何使用阿里云 ECS 发送邮件
    随着互联网的发展,电子邮件已经成为人们日常生活中不可或缺的一部分。然而,对于很多初学者来说,如何使用阿里云 ECS发送邮件可能是个难题。本文将详细介绍如何使用阿里云 ECS发送邮件,包括设置发送邮件的账户和密码、设置邮件服务器的地址和端口、...
    99+
    2023-11-14
    阿里 如何使用 发送邮件
  • 如何实现CentOS6中安装配置并使用mutt+msmtp发送邮件
    这篇文章主要介绍“如何实现CentOS6中安装配置并使用mutt+msmtp发送邮件”,在日常操作中,相信很多人在如何实现CentOS6中安装配置并使用mutt+msmtp发送邮件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-06-10
  • 阿里云服务器邮件发送端口如何设置和使用
    阿里云服务器是一种强大的云计算服务,提供了各种功能和工具,其中包括邮件发送功能。在使用阿里云服务器发送邮件时,我们需要设置正确的邮件发送端口,以便能够正常地将邮件发送到收件人的邮箱。本文将详细介绍如何设置和使用阿里云服务器的邮件发送端口。 ...
    99+
    2024-01-14
    阿里 端口 邮件发送
  • 阿里云使用SMTP服务器如何轻松发送电子邮件
    本文将详细解释如何在阿里云上使用SMTP服务器来发送电子邮件。阿里云是一个强大的云计算平台,提供了各种各样的服务,包括SMTP服务器。SMTP(SimpleMail TransferProtocol)是一种广泛使用的电子邮件传输协议,可以帮...
    99+
    2023-11-14
    阿里 发送电子邮件 轻松
  • 如何解决使用php中mail函数发送邮件收不到的问题
    这篇文章主要介绍如何解决使用php中mail函数发送邮件收不到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用php中的mail函数发送邮件收不到的解决方法:首先安装sendmail和sendmail-cf包...
    99+
    2023-06-15
  • 如何使用golang中的http.Post函数发送POST请求并获取响应
    如何使用golang中的http.Post函数发送POST请求并获取响应在使用golang进行网络编程时,http包是我们经常使用的一个重要模块。其中,http.Post函数是一个非常实用的函数,可以方便地发送POST请求并获取响应结果。下...
    99+
    2023-11-18
    Golang POST请求 httpPost
  • 阿里云服务器如何使用ip访问外网服务器
    简介 在使用阿里云服务器时,有时候我们需要通过IP地址来访问外网服务器。本文将介绍如何在阿里云服务器上使用IP访问外网服务器的方法和步骤。步骤一:配置防火墙规则在阿里云服务器上,首先需要配置防火墙规则,允许外部网络访问服务器的IP地址。具体...
    99+
    2024-01-15
    服务器 阿里 如何使用
  • 如何在Linux上用IP转发使内部网络连接到互联网
    本篇文章为大家展示了如何在Linux上用IP转发使内部网络连接到互联网,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面分享在 linux 上使用 iptables 将 ip 转发从一个网络接口转发...
    99+
    2023-06-28
  • 如何使用vbs右键发送sendto以及创建快捷方式到自定义的位置
    这篇文章主要介绍了如何使用vbs右键发送sendto以及创建快捷方式到自定义的位置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在SendTo文件夹里加上一文件夹的快捷方式后...
    99+
    2023-06-08
  • 阿里云发布服务器地址在哪里?如何找到并使用?
    阿里云是阿里巴巴旗下的云计算服务提供商,提供了丰富的服务器产品和服务。如果您在寻找阿里云服务器的地址,这篇文章将会为您提供详细的指导。 如何找到阿里云服务器地址: 阿里云服务器的地址可以在阿里云官方网站上找到。您可以通过以下步骤找到阿里云...
    99+
    2023-12-10
    阿里 地址 服务器
  • linux中如何使用Bash脚本发送包含几天内到期的用户账号列表的电子邮件
    小编给大家分享一下linux中如何使用Bash脚本发送包含几天内到期的用户账号列表的电子邮件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1) 检查 10 天后到...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作