65.9K
CodeProject 正在变化。 阅读更多。
Home

用于将 IP 信息发送到电子邮件地址的 VBScript

2007年10月7日

Ms-PL

2分钟阅读

viewsIcon

74069

downloadIcon

565

用于将 IP 信息发送到电子邮件地址的 VBScript。

引言

我在家里使用 PPPoE 连接,IP 地址几乎每次都会改变。我通常需要从外部位置连接到我的家庭电脑,但我无法设置固定的远程桌面连接,因为我没有固定的 IP。此外,我需要电脑启动时自动拨号连接,而无需电话指导对方。

本文包含两个简单的脚本,用于

  1. 拨号连接,并且
  2. 将 IP 信息发送到电子邮件帐户以供使用

Using the Code

该 VB 脚本使用 CDO 进行电子邮件传输,使用 WMI 进行 IP 获取。由于该脚本已注释,并且 CDO 和 WMI 方法的解释很容易找到,因此这里提供它。

'
' send the IP address via Gmail 
'
Sub SendIPInfo()

  On Error Resume Next

  Dim iMsg, iConf, Flds

  Set iMsg = CreateObject("CDO.Message")
  Set iConf = CreateObject("CDO.Configuration")
  Set Flds = iConf.Fields

  schema = "http://schemas.microsoft.com/cdo/configuration/"

  Flds.Item(schema & "sendusing") = 2
  Flds.Item(schema & "smtpserver") = "smtp.gmail.com" 
  Flds.Item(schema & "smtpserverport") = 465
  Flds.Item(schema & "smtpauthenticate") = 1
  Flds.Item(schema & "sendusername") = "your-gmail-username@gmail.com"
  Flds.Item(schema & "sendpassword") = "your-gmail-password"
  Flds.Item(schema & "smtpusessl") = 1
  Flds.Update

  ' message body
  strDate = CStr(Date()) & " " & CStr(Time())
  strBody = "---===---<br/>IP info YOURCOMPUTER " & strDate & " <br/><br/>"

  ' read adapters info
  strComputer = "."
  Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  Set colNicConfigs = objWMIService.ExecQuery _
   ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
  For Each objNicConfig In colNicConfigs
    strDescription = objNicConfig.Description
    IPAddress = objNicConfig.IPAddress
    strIP = ""
    For Each s in IPAddress
      if strIP = "" then
        strIP = s
      else
        strIP = strIP & ";" & s
      end if
    Next
    strBody = strBody & "<br/>" & _ 
      "Description:" & strDescription & "<br/>" & _ 
      "IP: " & strIP & "<br/>"
  Next
  strBody = strBody & "---===---" 

  With iMsg
    .To = "Sender Name <your-gmail-username@gmail.com>"
    .From = "Receiver Name <your-gmail-username@gmail.com>"
    .Subject = "IP info YOURCOMPUTER on: " & strDate
    .HTMLBody = strBody 
    .Sender = "Sender Name"
    .Organization = "Your Organisation"
    .ReplyTo = "your-gmail-username@gmail.com"
 
    Set .Configuration = iConf

    .Send 
  End With 
 
  ' release interfaces
  Set iMsg = nothing
  Set iConf = nothing
  Set Flds = nothing
End Sub  

SendIPInfo  

只需将 YOURCOMPUTER 替换为您的计算机名称,并将 your-gmail-usernameyour-gmail-password 替换为适当的 GMail 身份信息。
将脚本内容(或附带的 ipsend.zip)保存到您选择的位置(我使用的是 C:\etc),并确保该文件夹的安全,仅授予您访问权限(因为该文件包含电子邮件用户名和密码)。

* * *

另一件事是如何在启动时自动拨号 PPPoE 连接。

为此,只需创建一个批处理文件,例如

@echo off
if %1 EQU connect goto l_connect
if %1 EQU disconnect goto l_disconnect
goto l_unknown

:l_connect
rasdial CONN_NAME connUser connPassword
goto l_end

:l_disconnect
rasdial CONN_NAME /disconnect
goto l_end

:l_unknown
@echo Unknown option %1
goto l_end

:l_end

CONN_NAME 替换为网络连接中显示的连接名称,以及 connUser connPassword 替换为 ISP 的身份信息。同样,将文件保存在安全的位置(我使用的是 C:\etc\inet.bat),以便您的帐户无法读取或写入该文件。

还需要执行一个步骤才能使其自动执行:执行 gpedit.msc,转到计算机配置/Windows 设置/脚本,然后双击启动。在启动属性中,单击添加...,并将脚本名称设置为 C:\etc\inet.bat,并将脚本参数设置为 connect。(如果您还需要在关机时断开连接,请双击关机,并在脚本参数中设置 disconnect 而不是 connect)。

在添加自动拨号脚本 inet.bat 后,只需对添加上面的脚本 ipsend.vbs 重复相同的步骤(在编辑它之后)。据我所知,启动脚本按顺序执行,因此首先会拨号连接,然后会发送电子邮件。(为了方便起见,可以将 .bat.vbs 文件从单个 windows-startup.bat 文件调用,该文件执行拨号然后执行电子邮件任务)。

历史

  • 2007 年 10 月 6 日:初始发布
© . All rights reserved.