本帖最后由 yu2n 于 2019-5-26 19:42 编辑
更新 IP 检测网址为 http://www.bathome.net/s/ip.php
VBS发送外网IP到QQ邮箱 By Yu2n
功能:如题
说明:网络上这样的代码很多,这个的话,填上你的QQ号码信息,设置好QQ邮箱就能用。
注意,QQ邮箱升级了第三方SMTP接入,此处的密码不是登陆QQ邮箱密码,而是“设置”-“账号”-“POP3/IMAP/SMTP...”-“生成授权码”中生成的授权码,更安全。 | | | | | Option Explicit | | | | Const SvrName = "smtp.qq.com" | | Const SvrPort = "25" | | Const Username = "xxx@qq.com" | | Const Password = "asdfsdfhlxfdffdfd" | | Const MailFrom = "xxx@qq.com" | | Const MailTo = "yyy@qq.com" | | Const Subject = "NetCenterIP 当前 IP 为 {当前IP},发送于 {现在时间}" | | Const Message = "^o^" | | | | | | Main | | Sub Main() | | Dim CurIP, LastIP, strSubject, strMessage | | Do | | CurIP = GetWWWIP() | | If CurIP <> LastIP Then | | LastIP = CurIP | | strSubject = Replace(Subject, "{当前IP}", CurIP) | | strSubject = Replace(strSubject, "{现在时间}", FormatDT(Now(),"{y}/{M}/{D} {h}:{n}")) | | strMessage = Replace(Message, "{当前IP}", CurIP) | | strMessage = Replace(strMessage, "{现在时间}", FormatDT(Now(),"{y}/{M}/{D} {h}:{n}")) | | Call SendMail(SvrName, SvrPort, Username, Password, _ | | MailFrom, MailTo, strSubject, strMessage) | | End If | | WScript.Sleep 5 * 1000 | | Loop | | End Sub | | | | | | | | Function SendMail(strSvrName, strSvrPort, strUsername, strPassword, _ | | strFrom, strTo, strSubject, strMessage) | | Const schema = "http://schemas.microsoft.com/cdo/configuration/" | | Dim Check, Email, strAttachment | | Check = False | | On Error Resume Next | | Do Until Check = True | | Set Email = CreateObject("CDO.Message") | | Email.BodyPart.Charset = "utf-8" | | Email.From = strFrom | | Email.To = strTo | | Email.Subject = strSubject | | Email.Textbody = strMessage | | With Email.Configuration.Fields | | .Item(schema & "sendusing") = 2 | | .Item(schema & "smtpserver") = strSvrName | | .Item(schema & "smtpserverport") = strSvrPort | | .Item(schema & "smtpauthenticate") = 1 | | .Item(schema & "sendusername") = strUsername | | .Item(schema & "sendpassword") = strPassword | | .Item(schema & "smtpconnectiontimeout") = 60 | | .Update | | End With | | Err.Clear | | Email.Send | | If Err.Number = 0 Then Check = True | | Set Email = Nothing | | WScript.Sleep 200 | | Loop | | End Function | | | | | | | | Function GetWWWIP() | | Dim Check, objHttp, strHtml, re | | Check = False | | On Error Resume Next | | Do Until Check = True | | Set objHttp = CreateObject("WinHttp.WinHttpRequest.5.1") | | objHttp.SetTimeouts 5000,5000,5000,5000 | | objHttp.Open "GET", "http://www.bathome.net/s/ip.php", False | | objHttp.Send | | If objHttp.Status = 200 Then | | strHtml = objHttp.ResponseText() | | Set re = CreateObject("vbScript.regExp") | | re.Pattern = "(\d+\.\d+\.\d+\.\d+)" | | If re.Test(strHtml) Then | | GetWWWIP = re.Execute(strHtml)(0).SubMatches(0) | | Check = True | | End If | | End If | | Set re = Nothing | | Set objHttp = Nothing | | WScript.Sleep 200 | | Loop | | End Function | | | | | | | | | | | | | | Function FormatDT(DateTime, Template) | | If StringToDate(DateTime) = "" Or Trim(Template) = "" Then FormatDT = Template : Exit Function | | DateTime = StringToDate(DateTime) | | Dim dtmY,dtmM,dtmD,dtmH ,dtmN,dtmS,dtmW,arrFW,arrSW,arrFM,arrSM | | dtmY=Year(DateTime) : dtmM=Month(DateTime) : dtmD=Day(DateTime) : dtmW=WeekDay(DateTime) | | dtmH=Hour(DateTime) : dtmN=Minute(DateTime) : dtmS=Second(DateTime) | | arrFW = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") | | arrSW = Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat") | | arrFM = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") | | arrSM = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") | | Template = Replace(Template,"{Y}",dtmY) : Template = Replace(Template,"{y}",Right(dtmY,2)) | | Template = Replace(Template,"{M}",dtmM) : Template = Replace(Template,"{m}",Right("00"&dtmM ,2)) | | Template = Replace(Template,"{ME}",arrFM(dtmM-1)) : Template = Replace(Template,"{Me}",arrSM(dtmM-1)) | | Template = Replace(Template,"{D}",dtmD) : Template = Replace(Template,"{d}",Right("00"&dtmD,2)) | | Template = Replace(Template,"{H}",dtmH ) : Template = Replace(Template,"{h}",Right("00"&dtmH ,2)) | | Template = Replace(Template,"{N}",dtmN) : Template = Replace(Template,"{n}",Right("00"&dtmN,2)) | | Template = Replace(Template,"{S}",dtmS) : Template = Replace(Template,"{s}",Right("00"&dtmS,2)) | | Template = Replace(Template,"{W}",arrFW(dtmW-1)) : Template = Replace(Template,"{w}",arrSW(dtmW-1)) | | FormatDT = Template | | End Function | | | | Function StringToDate(ByVal strDate) | | If IsDate(strDate) Then StringToDate = CDate(strDate) : Exit Function | | Dim s1, s2 | | For Each s1 In Split(". - /") | | For Each s2 In Split(". - /") | | If IsDate(Replace(strDate,s1,s2)) Then StringToDate = CDate(Replace(strDate,s1,s2)) : Exit Function | | Next | | Next | | End FunctionCOPY |
效果如下: | 邮件标题:NetCenterIP 当前 IP 为 183.22.171.138,发送于 15/11/23 10:52 | | 邮件内容:^o^COPY |
|