╃苍狼山庄╃╃苍狼山庄╃

Clang出品,
必属精品!

动态IP地址监控器

动态监控公网IP地址变化并邮件通知


程序下载:IPMon.zip
源代码:

#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=5.ico
#AutoIt3Wrapper_outfile=IPMon.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_Comment=动态IP地址监控器
#AutoIt3Wrapper_Res_Description=动态IP地址监控器
#AutoIt3Wrapper_Res_Fileversion=2.3.11.823
#AutoIt3Wrapper_Res_LegalCopyright=╃苍狼山庄╃
#AutoIt3Wrapper_Res_Field=作者|Clang
#AutoIt3Wrapper_Res_Field=网站|https://clang.cn
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****

#cs ____________________________________

 AutoIt 版本: 3.3.5.6
 脚本作者: Clang
	Email: admin@clnag.cn
	QQ/TM: 4370001
 脚本版本: 监控ADSL动态IP地址
 脚本功能: 监控ADSL动态IP地址

#ce _______________脚本开始_________________

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <Constants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <SmtpMailer.au3>

Opt("GUIOnEventMode", 1)
Opt("GUICloseOnESC",0)
Opt("TrayMenuMode",1) 		;托盘内容要
Opt("TrayOnEventMode", 1)	;托盘转换成事务模式
Opt("TrayAutoPause", 0)		;把系统自动的单击暂停去掉
TrayTip("", "正在启动监控程序,请稍候...", 5)
TraySetClick ( 16 )			;仅允许点右键时出托盘菜单

Global Const $CrVer = "2.3.11.0823"
Global Const $strName = "动态IP地址监控程序"
Global $strPorgameName = $strName & " v" & $CrVer

If WinExists($strPorgameName) Then
	_WinRestore()
	Exit ; 此脚本已经运行了
EndIf
AutoItWinSetTitle($strPorgameName)

Global Const $strConfigINI=@ScriptDir&"\IPMonConfig.ini"	;配置加上绝对路径较可靠,不加则是相对即时的“当前工作路径”,可能会导致找都找不到文件
Global $LogFile=@ScriptDir & "\Log\"& "log_" & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & ".log"

Global $Button[3],$Checkbox[4],$strInIP,$strTime,$srtFile

Global $str_EncryptPassword = "P@ss"
;$sdfsdf = _StringEncryptX(1, "ssss", $str_EncryptPassword, 2)
;MsgBox(0,"",$sdfsdf)
;ClipPut ( $sdfsdf )

Global $sendCount = 0 ;发送计数

Global $s_SmtpServer,$s_FromName,$s_FromAddress,$s_ToAddress,$s_Subject,$as_Body,$s_AttachFiles,$s_CcAddress,$s_BccAddress,$s_Username,$s_Password,$IPPort,$ssl
Global Const $sInfoSource = "ip138"
Global $SetAutoStart=IniRead($strConfigINI,"Config","AutoStart","")
Global $SetAutoMon=IniRead($strConfigINI,"Config","AutoMon","")
Global $SetCloseToMin=IniRead($strConfigINI,"Config","CloseToMin","")
Global $SetStartToMin=IniRead($strConfigINI,"Config","StartToMin","")
Global $SetiTime =  IniRead($strConfigINI, "Config", "iTime", "")

Global $SetFromAddress =  IniRead($strConfigINI, "MailConfig", "FromAddress", "")
Global $SetSmtpServer =  IniRead($strConfigINI, "MailConfig", "SmtpServer", "")
Global $SetUsername =  IniRead($strConfigINI, "MailConfig", "Username", "")
Global $SetPassword =  IniRead($strConfigINI, "MailConfig", "Password", "")
Global $SetToAddress =  IniRead($strConfigINI, "MailConfig", "ToAddress", "")
Global $SetIPPort =  IniRead($strConfigINI, "MailConfig", "IPPort", "")
Global $SetSubject =  IniRead($strConfigINI, "MailConfig", "Subject", "")


Global $s_FromName = ""                                 ;邮件发送人
Global $s_AttachFiles = ""                            ;附件地址
Global $s_CcAddress = ""                             ;抄送地址
Global $s_BccAddress = ""                           ;密件抄送地址
Global $ssl = 0      


#Region ### START Koda GUI section ### Form=d:\clang\desktop\ip监控\form1.kxf
$Form1 = GUICreate($strPorgameName, 490, 433, (@DesktopWidth - 490) / 2, (@DesktopHeight - 433) / 2, BitOR($WS_SYSMENU,$WS_MINIMIZEBOX,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
$Group1 = GUICtrlCreateGroup("当前IP", 16, 16, 241, 105)
$Label12 = GUICtrlCreateLabel("内网IP地址:", 24, 40, 74, 17)
$strInsideIP = GUICtrlCreateLabel("", 112, 32, 130, 49)
$Label9 = GUICtrlCreateLabel("当前公网IP地址:", 24, 96, 98, 17)
$strInternetIP = GUICtrlCreateLabel("", 128, 96, 100, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("邮件发送设置", 16, 136, 457, 225)
$Label1 = GUICtrlCreateLabel("发邮件人邮箱:", 32, 160, 88, 17)
$inputFromAddress = GUICtrlCreateInput("", 128, 160, 329, 21)
GUICtrlSetData ( $inputFromAddress, $SetFromAddress )
$Label2 = GUICtrlCreateLabel("SMTP地址:", 32, 192, 70, 17)
$inputSmtpServer = GUICtrlCreateInput("", 128, 192, 193, 21)
GUICtrlSetData ( $inputSmtpServer, $SetSmtpServer )
$Label8 = GUICtrlCreateLabel("端口:", 336, 192, 40, 17)
$inputIPPort = GUICtrlCreateInput("", 384, 192, 73, 21)
GUICtrlSetData ( $inputIPPort, $SetIPPort )
$Label3 = GUICtrlCreateLabel("发件箱用户名:", 32, 224, 88, 17)
$inputUsername = GUICtrlCreateInput("", 128, 224, 329, 21)
GUICtrlSetData ( $inputUsername, $SetUsername )
$Label4 = GUICtrlCreateLabel("发件箱密码:", 32, 256, 76, 17)
$inputPassword = GUICtrlCreateInput("", 128, 256, 329, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
GUICtrlSetData ( $inputPassword, $SetPassword )
$Label5 = GUICtrlCreateLabel("收件箱地址:", 32, 288, 76, 17)
$inputToAddress = GUICtrlCreateInput("", 128, 288, 329, 21)
GUICtrlSetData ( $inputToAddress, $SetToAddress )
$Label11 = GUICtrlCreateLabel("邮件主题:", 32, 320, 64, 17)
$inputSubject = GUICtrlCreateInput("", 128, 320, 329, 21)
GUICtrlSetData ( $inputSubject, $SetSubject )
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("参数设置", 272, 16, 201, 105)
$Checkbox[0] = GUICtrlCreateCheckbox("随系统启动",  280, 40, 89, 17)
If $SetAutoStart="1" Then
	GUICtrlSetState($Checkbox[0],$GUI_CHECKED)
Else
	GUICtrlSetState($Checkbox[0], $GUI_UNCHECKED)
EndIf
$Checkbox[1] = GUICtrlCreateCheckbox("开始监控", 376, 40, 89, 17)
If $SetAutoMon="1" Then
	GUICtrlSetState($Checkbox[1],$GUI_CHECKED)
Else
	GUICtrlSetState($Checkbox[1], $GUI_UNCHECKED)
EndIf
$Checkbox[2] = GUICtrlCreateCheckbox("启动后最小化", 280, 64, 89, 17)
If $SetStartToMin="1" Then
	GUICtrlSetState($Checkbox[2],$GUI_CHECKED)
Else
	GUICtrlSetState($Checkbox[2], $GUI_UNCHECKED)
EndIf
$Checkbox[3] = GUICtrlCreateCheckbox("关闭最小化", 376, 64, 81, 17)
If $SetCloseToMin="1" Then
	GUICtrlSetState($Checkbox[3],$GUI_CHECKED)
Else
	GUICtrlSetState($Checkbox[3], $GUI_UNCHECKED)
EndIf
$Label6 = GUICtrlCreateLabel("监控时间间隔", 288, 96, 76, 17)
$inputTime = GUICtrlCreateInput("", 368, 92, 49, 21)
If $SetiTime <> "" Then
	GUICtrlSetData ( $inputTime, $SetiTime )
Else
	GUICtrlSetData ( $inputTime, "5" )
EndIf
$Label7 = GUICtrlCreateLabel("分钟", 424, 96, 28, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button[0] = GUICtrlCreateButton("发送测试", 216, 376, 75, 25)
$Button[1] = GUICtrlCreateButton("清空设置", 304, 376, 75, 25)
$Button[2] = GUICtrlCreateButton("保存设置", 392, 376, 75, 25)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
Dim $StatusBar1_PartsWidth[2] = [280, -1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "", 0)
_GUICtrlStatusBar_SetText($StatusBar1, @TAB & @TAB & "╃苍狼山庄╃ https://clang.cn", 1)


;======托盘菜单区======
$TrayShow = TrayCreateItem("显示主界面")
TrayItemSetOnEvent($TrayShow,"_ShowMain")
TrayItemSetState ( $TrayShow, $TRAY_UNCHECKED)
TrayCreateItem("")
$TrayExit = TrayCreateItem("退出")
TrayItemSetOnEvent(-1,"_Quit")

TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE,"_ShowMain")		;左键双击通知区域
TraySetState()

TrayTip("", "", 5)

TraySetToolTip($strName)


$info =_NetworkAdapterInfo()
$InsideIPCount = $info[0][0]
For $i = 1 to $info[0][0] Step +1
	$strIP = "IP[" & $i & "]:" &  $info[$i][5]
	If $strInIP = "" Then
		$strInIP = $strIP
	Else
		$strInIP = $strInIP & @CRLF & $strIP
	EndIf
Next

$asResult = fn_GetWanIP($sInfoSource)
If Not IsArray($asResult) Then
	GUICtrlSetData ( $strInternetIP, "unknown ip" )
Else
	GUICtrlSetData ( $strInternetIP, $asResult[0] )
EndIf

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
If GUICtrlRead($Checkbox[3])=1 Then
	GUISetOnEvent($GUI_EVENT_CLOSE, "_WinMinimize")
Else
	GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
EndIf
If GUICtrlRead($Checkbox[2])=1 Then
	_WinMinimize()
EndIf
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_WinMinimize")
For $i=0 To 2
	GUICtrlSetOnEvent($Button[$i], "_btnEvent")
Next
For $i=0 To 3
	GUICtrlSetOnEvent($Checkbox[$i], "_cbEvent")
Next
;======释放内存======
_ReduceMemory(@AutoItPID)
_FirstRun()

While 1
	$oldIP = GUICtrlRead( $strInternetIP )
	$asResult = fn_GetWanIP($sInfoSource)
	If Not IsArray($asResult) Then
		GUICtrlSetData ( $strInternetIP, "unknown ip" )
	Else
		GUICtrlSetData ( $strInternetIP, $asResult[0] )
	EndIf
	;MsgBox (0,"",$strInIP )
	GUICtrlSetData ( $strInsideIP, $strInIP )
	If GUICtrlRead($Checkbox[1])=1 Then
		$result = StringCompare($oldIP, GUICtrlRead( $strInternetIP ))		
		$strTime = @YEAR & "年" & @MON & "月" & @MDAY & "日" & @HOUR & "时" & @MIN & "分" & @SEC & "秒"
		If $result <> 0 Then
			$s_FromAddress =  IniRead($strConfigINI, "MailConfig", "FromAddress", "")
			$s_SmtpServer =  IniRead($strConfigINI, "MailConfig", "SmtpServer", "")
			$s_Username =  IniRead($strConfigINI, "MailConfig", "Username", "")
			$s_Password =  _StringEncryptX(0, IniRead($strConfigINI, "MailConfig", "Password", ""), $str_EncryptPassword, 2)
			$s_ToAddress =  IniRead($strConfigINI, "MailConfig", "ToAddress", "")
			$IPPort =  IniRead($strConfigINI, "MailConfig", "IPPort", "")
			$s_Subject =  IniRead($strConfigINI, "MailConfig", "Subject", "") & "-" & $strTime
			$as_Body = "来自计算机【" & @ComputerName & "】" & @CRLF & "用户【" & @UserName & "】" & @CRLF & "获得内网IP地址" & $InsideIPCount & "个:" & @CRLF & GUICtrlRead( $strInsideIP ) & @CRLF & "公网IP:" & GUICtrlRead( $strInternetIP )
			_sendmailFunc()	
			$sendCount = $sendCount + 1
		EndIf
	EndIf
	_TraySetToolTip()
	$SetiTime = IniRead($strConfigINI, "Config", "iTime", "")
	If $SetiTime = "" Then
		$SetiTime = "5"
	EndIf
	_ReduceMemory(@AutoItPID)
	Sleep( $SetiTime * 60000 )
	;MsgBox(0,"","t")
WEnd


Func _FirstRun()
	GUICtrlSetData ( $strInsideIP, $strInIP )
	If GUICtrlRead($Checkbox[1])=1 Then
		$s_FromAddress =  IniRead($strConfigINI, "MailConfig", "FromAddress", "")
		$s_SmtpServer =  IniRead($strConfigINI, "MailConfig", "SmtpServer", "")
		$s_Username =  IniRead($strConfigINI, "MailConfig", "Username", "")
		$s_Password =  _StringEncryptX(0, IniRead($strConfigINI, "MailConfig", "Password", ""), $str_EncryptPassword, 2)
		$s_ToAddress =  IniRead($strConfigINI, "MailConfig", "ToAddress", "")
		$IPPort =  IniRead($strConfigINI, "MailConfig", "IPPort", "")
		$strTime = @YEAR & "年" & @MON & "月" & @MDAY & "日" & @HOUR & "时" & @MIN & "分" & @SEC & "秒"
		$s_Subject =  IniRead($strConfigINI, "MailConfig", "Subject", "") & "-" & $strTime
		$as_Body = "来自计算机【" & @ComputerName & "】" & @CRLF & "用户【" & @UserName & "】" & @CRLF & "获得内网IP地址" & $InsideIPCount & "个:" & @CRLF & GUICtrlRead( $strInsideIP ) & @CRLF & "公网IP:" & GUICtrlRead( $strInternetIP )
		_sendmailFunc()	
		$sendCount = $sendCount + 1
	EndIf
	_TraySetToolTip()
	_ReduceMemory(@AutoItPID)
EndFunc

;======事件函数======
Func _btnEvent()
	Switch @GUI_CtrlId
		Case $Button[0]
			$s_FromAddress =  IniRead($strConfigINI, "MailConfig", "FromAddress", "")
			$s_SmtpServer =  IniRead($strConfigINI, "MailConfig", "SmtpServer", "")
			$s_Username =  IniRead($strConfigINI, "MailConfig", "Username", "")
			$s_Password =  _StringEncryptX(0, IniRead($strConfigINI, "MailConfig", "Password", ""), $str_EncryptPassword, 2)
			$s_ToAddress =  IniRead($strConfigINI, "MailConfig", "ToAddress", "")
			$IPPort =  IniRead($strConfigINI, "MailConfig", "IPPort", "")
			$strTime = @YEAR & "年" & @MON & "月" & @MDAY & "日" & @HOUR & "时" & @MIN & "分" & @SEC & "秒"
			$s_Subject =  IniRead($strConfigINI, "MailConfig", "Subject", "") & "-" & $strTime
			$as_Body = "来自计算机【" & @ComputerName & "】" & @CRLF & "用户【" & @UserName & "】" & @CRLF & "获得内网IP地址:" & $InsideIPCount & "个" & @CRLF & GUICtrlRead( $strInsideIP ) & @CRLF & "公网IP:" & GUICtrlRead( $strInternetIP )
			;MsgBox(0,"",$as_Body)
			_sendmailFunc()
			$sendCount = $sendCount + 1
			_TraySetToolTip()
		Case $Button[1]
			IniWrite($strConfigINI, "MailConfig", "FromAddress", "")
			IniWrite($strConfigINI, "MailConfig", "SmtpServer", "")
			IniWrite($strConfigINI, "MailConfig", "Username", "")
			IniWrite($strConfigINI, "MailConfig", "Password", "")
			IniWrite($strConfigINI, "MailConfig", "ToAddress", "")
			IniWrite($strConfigINI, "MailConfig", "IPPort", "")
			IniWrite($strConfigINI, "MailConfig", "Subject", "")
			IniWrite($strConfigINI, "Config", "iTime", "")
			GUICtrlSetData ( $inputFromAddress, "" )
			GUICtrlSetData ( $inputSmtpServer, "" )
			GUICtrlSetData ( $inputIPPort, "" )
			GUICtrlSetData ( $inputUsername, "" )
			GUICtrlSetData ( $inputPassword, "" )
			GUICtrlSetData ( $inputToAddress, "" )
			GUICtrlSetData ( $inputSubject, "" )
			GUICtrlSetData ( $inputTime, "" )
			
			IniWrite($strConfigINI,"Config","AutoStart","0")
			RegDelete("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","IPMon_C")
			
			IniWrite($strConfigINI,"Config","AutoMon","0")
			
			IniWrite($strConfigINI,"Config","StartToMin","0")
			
			IniWrite($strConfigINI,"Config","CloseToMin","0")
		Case $Button[2]
			IniWrite($strConfigINI, "MailConfig", "FromAddress", GUICtrlRead( $inputFromAddress ))
			IniWrite($strConfigINI, "MailConfig", "SmtpServer", GUICtrlRead( $inputSmtpServer ))
			IniWrite($strConfigINI, "MailConfig", "Username", GUICtrlRead( $inputUsername ))
			If $SetPassword <> GUICtrlRead( $inputPassword ) Then
				IniWrite($strConfigINI, "MailConfig", "Password", _StringEncryptX(1, GUICtrlRead( $inputPassword ), $str_EncryptPassword, 2))
			Else
				IniWrite($strConfigINI, "MailConfig", "Password",GUICtrlRead( $inputPassword ))
			EndIf
			IniWrite($strConfigINI, "MailConfig", "ToAddress", GUICtrlRead( $inputToAddress ))
			IniWrite($strConfigINI, "MailConfig", "IPPort", GUICtrlRead( $inputIPPort ))
			IniWrite($strConfigINI, "MailConfig", "Subject", GUICtrlRead( $inputSubject ))
			IniWrite($strConfigINI, "Config", "iTime", GUICtrlRead( $inputTime ))
	EndSwitch
EndFunc

Func _cbEvent()
	Switch @GUI_CtrlId
		Case $Checkbox[0]
			If GUICtrlRead($Checkbox[0])=1 Then
				IniWrite($strConfigINI,"Config","AutoStart","1")
				RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","IPMon_C","REG_SZ",@ScriptFullPath)
				If RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","IPMon_C") <> @ScriptFullPath Then
					GUICtrlSetState($Checkbox[0],$GUI_UNCHECKED)
					IniWrite($strConfigINI,"Config","AutoStart","0")
				EndIf
			Else
				IniWrite($strConfigINI,"Config","AutoStart","0")
				RegDelete("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","IPMon_C")
			EndIf
		Case $Checkbox[1]
			If GUICtrlRead($Checkbox[1])=1 Then
				IniWrite($strConfigINI,"Config","AutoMon","1")
				_FirstRun()
				TraySetToolTip("正在监控 - 已发送邮件" & $sendCount & "次." & @CRLF & "最后一次监控时间:" & $strTime)
				_GUICtrlStatusBar_SetText($StatusBar1, "最后监控时间:" & $strTime, 0)
			Else
				IniWrite($strConfigINI,"Config","AutoMon","0")
				TraySetToolTip("停止监控 - 已发送邮件" & $sendCount & "次。" & @CRLF & "最后一次监控时间:" & $strTime)
				_GUICtrlStatusBar_SetText($StatusBar1, "最后监控时间:" & $strTime, 0)
			EndIf
		Case $Checkbox[2]
			If GUICtrlRead($Checkbox[2])=1 Then
				IniWrite($strConfigINI,"Config","StartToMin","1")
			Else
				IniWrite($strConfigINI,"Config","StartToMin","0")
			EndIf
		Case $Checkbox[3]
			If GUICtrlRead($Checkbox[3])=1 Then
				GUISetOnEvent($GUI_EVENT_CLOSE, "_WinMinimize")
				IniWrite($strConfigINI,"Config","CloseToMin","1")
			Else
				GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
				IniWrite($strConfigINI,"Config","CloseToMin","0")
			EndIf
	EndSwitch
EndFunc

Func _TraySetToolTip()
	If GUICtrlRead($Checkbox[1])=1 Then
		TraySetToolTip("正在监控 - 已发送邮件" & $sendCount & "次。" & @CRLF & "最后一次监控时间:" & $strTime)
		_GUICtrlStatusBar_SetText($StatusBar1, "最后监控时间:" & $strTime, 0)
	Else
		TraySetToolTip("停止监控 - 已发送邮件" & $sendCount & "次。" & @CRLF & "最后一次监控时间:" & $strTime)		
		_GUICtrlStatusBar_SetText($StatusBar1, "最后监控时间:" & $strTime, 0)
	EndIf
EndFunc

Func _sendmailFunc()
	If GUICtrlRead( $inputFromAddress ) <> "" And GUICtrlRead( $inputSmtpServer ) <> "" And GUICtrlRead( $inputUsername ) <> "" And GUICtrlRead( $inputPassword ) <> "" And GUICtrlRead( $inputToAddress ) <> "" And GUICtrlRead( $inputIPPort ) <> "" And GUICtrlRead( $inputSubject ) <> "" Then
		sendmail ()
	Else
		MsgBox(0+16+262144, $strName, "未配置“邮件发送设置”!")
	EndIf
EndFunc

;======最小化====== 
Func _WinMinimize()    ;窗口最小化隐藏操作
    TrayTip("提示","监控正在运行,双击此图标显示监视界面!",10,1)
    GUISetState(@SW_HIDE)
	_ReduceMemory(@AutoItPID)
;~     AdlibEnable("DSTask", 1000)
EndFunc

;======恢复======
Func _WinRestore()        ;窗口恢复还原操作
	TrayItemSetState ( $TrayShow, $TRAY_UNCHECKED)
    GUISetState(@SW_SHOW)
    GUISetState(@SW_RESTORE)
    if WinActive($strPorgameName)=0 Then WinActivate($strPorgameName)
	_ReduceMemory(@AutoItPID)
EndFunc ;==> kcWinRestore

;======显示主界面======
Func _ShowMain()
	_WinRestore()
EndFunc

;======退出======
Func _Quit()
	Exit
EndFunc 

;======邮件发送======
Func sendmail()
        Global $oMyRet[2]
        Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
        $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
        If @error Then
			;MsgBox(0+16+262144, $strName, "邮件发送失败,错误代号:" & @error & @CRLF & "描述:" & $rc)
			_Log(@error,$rc)
        EndIf
EndFunc   ;==>sendmail

;======日志记录======
Func _Log($strErr,$strDes)
	$srtFile = FileOpen($LogFile, 10)
	FileWrite($srtFile,"On " & @YEAR & "年" & @MON & "月" & @MDAY & "日" & @HOUR & "时" & @MIN & "分" & @SEC & "秒" & @CRLF & "邮件发送失败,错误代号:" & $strErr & @CRLF & "描述:" & $strDes)
	FileClose($srtFile)
EndFunc	

;======内存释放======
Func _ReduceMemory($i_PID = -1);内存释放函数 该函数抄自ACN论坛(http://autoit.net.cn)
    If $i_PID <> -1 Then
        Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
        Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
        DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
    Else
        Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    EndIf
    Return $ai_Return[0]
EndFunc   ;==>_ReduceMemory 


;======密码加密======
Func _StringEncryptX($i_Encrypt, $s_EncryptText, $s_EncryptPassword, $i_EncryptLevel = 1)
        If $i_Encrypt <> 0 And $i_Encrypt <> 1 Then
                SetError(1)
                Return ''
        ElseIf $s_EncryptText = '' Or $s_EncryptPassword = '' Then
                SetError(1)
                Return ''
        Else
                If Number($i_EncryptLevel) <= 0 Or Int($i_EncryptLevel) <> $i_EncryptLevel Then $i_EncryptLevel = 1
                Local $v_EncryptModified, $i_EncryptCountH, $i_EncryptCountG, $v_EncryptSwap, $av_EncryptBox[256][2]
                Local $i_EncryptCountA, $i_EncryptCountB, $i_EncryptCountC, $i_EncryptCountD, $i_EncryptCountE
                Local $v_EncryptCipher, $v_EncryptCipherBy
                If $i_Encrypt = 1 Then
                        For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
                                $i_EncryptCountG = ''
                                $i_EncryptCountH = ''
                                $v_EncryptModified = ''
                                For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
                                        If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
                                                $i_EncryptCountH = 1
                                        Else
                                                $i_EncryptCountH += 1
                                        EndIf
                                        $v_EncryptModified = $v_EncryptModified & ChrW(BitXOR(AscW(StringMid($s_EncryptText, $i_EncryptCountG, 1)), AscW(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
                                Next
                                $s_EncryptText = $v_EncryptModified
                                $i_EncryptCountA = ''
                                $i_EncryptCountB = 0
                                $i_EncryptCountC = ''
                                $i_EncryptCountD = ''
                                $i_EncryptCountE = ''
                                $v_EncryptCipherBy = ''
                                $v_EncryptCipher = ''
                                $v_EncryptSwap = ''
                                $av_EncryptBox = ''
                                Local $av_EncryptBox[256][2]
                                For $i_EncryptCountA = 0 To 255
                                        $av_EncryptBox[$i_EncryptCountA][1] = AscW(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
                                        $av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
                                Next
                                For $i_EncryptCountA = 0 To 255
                                        $i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
                                        $v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
                                        $av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
                                        $av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
                                Next
                                For $i_EncryptCountA = 1 To StringLen($s_EncryptText)
                                        $i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
                                        $i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
                                        $i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
                                        $v_EncryptCipherBy = BitXOR(AscW(StringMid($s_EncryptText, $i_EncryptCountA, 1)), $i_EncryptCountE)
                                        $v_EncryptCipher &= Hex($v_EncryptCipherBy, 2)
                                Next
                                $s_EncryptText = $v_EncryptCipher
                        Next
                Else
                        For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
                                $i_EncryptCountB = 0
                                $i_EncryptCountC = ''
                                $i_EncryptCountD = ''
                                $i_EncryptCountE = ''
                                $v_EncryptCipherBy = ''
                                $v_EncryptCipher = ''
                                $v_EncryptSwap = ''
                                $av_EncryptBox = ''
                                Local $av_EncryptBox[256][2]
                                For $i_EncryptCountA = 0 To 255
                                        $av_EncryptBox[$i_EncryptCountA][1] = AscW(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
                                        $av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
                                Next
                                For $i_EncryptCountA = 0 To 255
                                        $i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
                                        $v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
                                        $av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
                                        $av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
                                Next
                                For $i_EncryptCountA = 1 To StringLen($s_EncryptText) Step 2
                                        $i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
                                        $i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
                                        $i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
                                        $v_EncryptCipherBy = BitXOR(Dec(StringMid($s_EncryptText, $i_EncryptCountA, 2)), $i_EncryptCountE)
                                        $v_EncryptCipher = $v_EncryptCipher & ChrW($v_EncryptCipherBy)
                                Next
                                $s_EncryptText = $v_EncryptCipher
                                $i_EncryptCountG = ''
                                $i_EncryptCountH = ''
                                $v_EncryptModified = ''
                                For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
                                        If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
                                                $i_EncryptCountH = 1
                                        Else
                                                $i_EncryptCountH += 1
                                        EndIf
                                        $v_EncryptModified &= ChrW(BitXOR(AscW(StringMid($s_EncryptText, $i_EncryptCountG, 1)), AscW(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
                                Next
                                $s_EncryptText = $v_EncryptModified
                        Next
                EndIf
                Return $s_EncryptText
        EndIf
EndFunc   ;==>_StringEncryptX


Func _NetworkAdapterInfo()
;======================================================
;
; 函数名称:        _NetworkAdapterInfo()
; 详细信息:        获取系统所有网卡信息
; 返回值说明:
; 以二维数组方式返回.例如 $info=_NetworkAdapterInfo()
; $info[0][0] 网卡数量
; $info[1][0] 第一块网卡的标志1
; $info[1][1] 第一块网卡的状态 
; 状态说明:;Case 0 strConnStatus = "Disconnected"
			;Case 1 strConnStatus = "Connecting"
			;Case 1 strConnStatus = "connected"
			;Case 3 strConnStatus = "Disconnecting"
			;Case 4 strConnStatus = "Hardware not present"
			;Case 5 strConnStatus = "Hardware disabled"
			;Case 6 strConnStatus = "Hardware malfunction"
			;Case 7 strConnStatus = "Media disconnected"
			;Case 8 strConnStatus = "Authenticating"
			;Case 9 strConnStatus = "Authentication succeeded"
			;Case 10 strConnStatus = "Authentication failed"
			;Case 11 strConnStatus = "Invalid address"
			;Case 12 strConnStatus = "Connecting"
			;Case Else strConnStatus = "Credentials required"
; $info[1][2] 第一块网卡的网卡名称
; $info[1][3] 第一块网卡的连接名称
; $info[1][4] 第一块网卡的MAC地址
; $info[1][5] 第一块网卡的IP地址
; $info[1][6] 第一块网卡的默认网关
; $info[1][7] 第一块网卡的子网掩码
; $info[1][8] 第一块网卡的主DNS
; $info[1][9] 第一块网卡的次DNS
; 第二块网卡:
; $info[2][0] 第二块网卡的标志1
; $info[2][9] 第二块网卡的次DNS
 
; 其他网卡信息依次类推。。。
; 注意,此UDF不会获取已经禁用的网卡。
; 作者:      Sanhen ([email]gxbeiliu@163.com[/email])
; 网站: [url]www.lunhui.net.cn[/url]  [url]www.autoit.net.cn[/url]
;======================================================
        Local $colItem
        Local $objItem
        Local $colItems 
        Local $objItems
        Local $objWMIService 
        Local $Adapters[1][10]
        $Adapters[0][0] = 0
        $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
        $colItem  = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus = 2", "WQL", 0x30)
        If IsObj($colItem) Then
				For $objItem In $colItem
                        If $objItem.MACAddress = "00:00:00:00:00:00" Then ContinueLoop
                        $Adapters[0][0] += 1
                        ReDim $Adapters[UBound($Adapters) + 1][10]
                        $Adapters[$Adapters[0][0]][0] += $Adapters[0][0]
                        $Adapters[$Adapters[0][0]][1] = $objItem.NetConnectionStatus
                        $Adapters[$Adapters[0][0]][2] = $objItem.Description
                        $Adapters[$Adapters[0][0]][3] = $objItem.NetConnectionID
                        $Adapters[$Adapters[0][0]][4] = $objItem.MACAddress     
                        $colItems  = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress = "'&$Adapters[$Adapters[0][0]][4]&'" And IPEnabled != 0 ' , "WQL", 0x30)                                             
                        If IsObj($colItems) Then
                                For $objItems In $colItems
                                        ;if $objItem1.IPAddress(0) = "0.0.0.0" Then ContinueLoop
                                        $Adapters[$Adapters[0][0]][5] = $objItems.IPAddress(0)
                                        $Adapters[$Adapters[0][0]][6] = $objItems.DefaultIPGateway(0)
                                        $Adapters[$Adapters[0][0]][7] = $objItems.IPSubnet(0)
                                        $Adapters[$Adapters[0][0]][8] = $objItems.DNSServerSearchOrder(0)
										If UBound($objItems.DNSServerSearchOrder)=1 Then
											$Adapters[$Adapters[0][0]][9] = "0"
										Else
											$Adapters[$Adapters[0][0]][9] = $objItems.DNSServerSearchOrder(1)
										EndIf
										;$Adapters[$Adapters[0][0]][9] = $objItems.DNSServerSearchOrder(1)
										;$i=1
										;$dnsnum = UBound($objItems.DNSServerSearchOrder)-1
										;$dnss= ""
										;MsgBox(0,"","网卡型号=" &  $objItem.Description & @crlf & $dnsnum)
										;For $i=0 To $dnsnum
										;	$dns = $objItems.DNSServerSearchOrder($i)
										;	$dnss = $dnss & $dns & "/"
										;	$Adapters[$Adapters[0][0]][8] = StringTrimRight($dnss, 1)
										;Next
                                Next    
                        EndIf
                Next
        EndIf
        
Return $Adapters
 
EndFunc

; ===============================================================================================================================
; 函数名称: fn_GetWanIP
; 函数环境: AutoIt3 v3.3.6.1
; 函数版本: 1.1.0 Build 20110316
; 函数说明: 跟据参数,选择从不同的信息渠道获取外网IP地址
; 函数语法: fn_GetWanIP($sInfoSource, $sTempDir, $sTempFile)
; 参数说明: $sInfoSource        ——        信息源标识/标号
;                   |1                        ——        信息源标号,选择信息源:                        http://www.ip138.com/ip2city.asp
;                   |2                        ——        信息源标号,选择信息源:                         http://www.whatismyip.com/automation/n09230945.asp
;                   |3                        ——        信息源标号,选择信息源:                         http://www.aamailsoft.com/getip.php
;                   |4                        ——        信息源标号,选择信息源:                         http://checkip.dyndns.org/
;                   |5                        ——        信息源标号,选择信息源:                         http://www.geobytes.com/IpLocator.htm
;                   |6                        ——        (默认)信息源标号,选择信息源:        http://ip.qq.com/cgi-bin/index
;                   |7                        ——        信息源标号,选择信息源:                         http://www.123cha.com/ip/
;                                |8                        ——        信息源标号,选择信息源:                         http://ip.91cool.net/ip.php
;                   
;                   |ip138                ——        信息源标识,选择信息源:                        http://www.ip138.com/ip2city.asp
;                   |whatismyip        ——        信息源标识,选择信息源:                         http://www.whatismyip.com/automation/n09230945.asp
;                   |aamailsoft        ——        信息源标识,选择信息源:                         http://www.aamailsoft.com/getip.php
;                   |dyndns                ——        信息源标识,选择信息源:                         http://checkip.dyndns.org/
;                   |geobytes        ——        信息源标识,选择信息源:                         http://www.geobytes.com/IpLocator.htm
;                   |qq                        ——        信息源标识,选择信息源:                         http://ip.qq.com/cgi-bin/index
;                   |123cha                ——        信息源标识,选择信息源:                         http://www.123cha.com/ip/
;                   |91cool                ——        信息源标识,选择信息源:                         http://ip.91cool.net/ip.php
;                   
;           $iMode                        ——        是否只使用指定的信息源获取IP地址(1 = yes|0(默认) = no)
;           $sTempDir                ——        参数已取消,保留此参数格式只为了兼容旧版本函数
;           $sTempFile                ——        参数已取消,保留此参数格式只为了兼容旧版本函数
; 返 回 值: 返回一个数组:
;                                        第一个元素($array[0])保存外网IP地址,获取失败返回 "0.0.0.0"
;                                        第二个元素($array[1])保存外网IP地址所在的物理地址,获取失败返回空字符
;                                        第三个元素($array[2])保存信息来源地址,获取失败返回空字符
; 函数作者: easefull
; 创建日期: 2009-12-31
; 更新日期: 2011-03-16
; 函数改良: 
; 修改说明: 
; 相关函数: 
; 链接网页: 
; 函数示例: 
;           Example 1: 
;           #include <Array.au3>
;           $Array = fn_GetWanIP()
;           _ArrayDisplay($Array)
;           
;           Example 2: 
;           #include <Array.au3>
;           $iInfoSource = 1
;           $Array = fn_GetWanIP($iInfoSource)
;           _ArrayDisplay($Array)
;           
;           Example 3: 
;           #include <Array.au3>
;           $sInfoSource = "ip138"
;           $Array = fn_GetWanIP($sInfoSource)
;           _ArrayDisplay($Array)
;           
;           Example 4: 
;           #include <Array.au3>
;           $iInfoSource = "ip138"
;           $iMode = 1
;           $Array = fn_GetWanIP($iInfoSource, $iMode)
;           _ArrayDisplay($Array)
; ===============================================================================================================================
Func fn_GetWanIP($sInfoSource = 6, $iMode = 0, $sTempDir = "", $sTempFile = "")
        ;=================================================
        ; 定义局部变量
        ; $sURL                                ——        储存 IP获取页面URL(Key)
        ; $asURL                        ——        储存 IP获取页面URL(数组)
        ; $asResult                        ——        储存 外网IP地址和物理地址
        ; $nIndex                        ——        储存 可获取的信息源数量
        ; $iStep                        ——        储存 信息标识累加器
        ; $sHTML                        ——        储存 下载页面内容
        ; $asIP[0]                        ——        中转变量 匹配的正则返回值
        ;=================================================
        Local $sURL = @CR & _
        "http://www.ip138.com/ip2city.asp" & @CR & _
        "http://www.whatismyip.com/automation/n09230945.asp" & @CR & _
        "http://www.aamailsoft.com/getip.php" & @CR & _
        "http://checkip.dyndns.org/" & @CR & _
        "http://www.geobytes.com/IpLocator.htm" & @CR & _
        "http://ip.QQ.com/cgi-bin/index" & @CR & _
        "http://www.123cha.com/ip/" & @CR & _
        "http://ip.91cool.net/ip.php" & @CR
        Local $asURL  = StringRegExp($sURL, '(?<=\r)[\S]+(?=\r)', 3)
        Local $nIndex = UBound($asURL), $iStep = 0, $iMark
        Local $asResult[3], $sHTML, $asIP[1]
        ;=================================================
        ; 检查参数,防止意外错误
        ;=================================================
        ; 格式化参数 信息源标识
        ;=================================================
        If StringIsDigit($sInfoSource) = 0 Or $sInfoSource > $nIndex Or $sInfoSource < 0 Then
                For $i = 0 To $nIndex - 1 Step 1
                        $asIP = StringRegExp($asURL[$i], '(?<=\.)\w+(?=\.)', 1)
                        If $sInfoSource == $asIP[0] Then
                                $sInfoSource = $i + 1
                                ExitLoop
                        EndIf
                Next
                If StringIsDigit($sInfoSource) = 0 Or $sInfoSource > $nIndex Or $sInfoSource < 0 Then $sInfoSource = 6
        EndIf
        ;=================================================
        ; 使用机械指针结构,从不同信息点循环获取IP信息
        ;=================================================
        Do
                ;=================================================
                ; 从指定的信息源获取信息
                ;=================================================
                $sHTML = BinaryToString(InetRead($asURL[$sInfoSource - 1], 1))
                $asIP  = StringRegExp($sHTML, '(((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d))', 1)
                ;=================================================
                ; 如果成功获取信息
                ;=================================================
                If Not @error Then
                        ;=================================================
                        ; 保存 IP地址
                        ;=================================================
                        $asResult[0] = $asIP[0]
                        ;=================================================
                        ; 获取 信息来源地址
                        ;=================================================
                        $asIP        = StringRegExp($asURL[$sInfoSource - 1], '(?<=\.)\w+\.\w+(?=\/)', 1)
                        If Not @error Then $asResult[2] = $asIP[0]
                        ;=================================================
                        ; 获取 IP所在的物理地址
                        ;=================================================
                        If $sInfoSource <> 6 And $sInfoSource <> 8 Then
                                ;=================================================
                                ; 信息源不提供物理地址的将从第6信息源获取物理地址
                                ;=================================================
                                $sInfoSource = 6
                                $sHTML = BinaryToString(InetRead($asURL[$sInfoSource - 1], 1))
                        EndIf
                        Select
                                Case $sInfoSource = 6
                                        $asIP = StringRegExp($sHTML, '(?<=<span>)[^<]+(?=</span></p>)', 1)
                                        If Not @error Then $asResult[1] = StringRegExpReplace($asIP[0], '&nbsp;', '')
                                Case $sInfoSource = 8
                                        $asIP = StringRegExp($sHTML, '(?<=来自)[^"]+(?=")', 1)
                                        If Not @error Then $asResult[1] = $asIP[0]
                        EndSelect
                EndIf
                ;=================================================
                ; 机械指针计算
                ; 继续循环查找IP
                ;=================================================
                $iStep += 1
                $sInfoSource = $sInfoSource + $iStep
                If $sInfoSource > $nIndex Then $sInfoSource -= $nIndex
        Until $asResult[0] Or $iMode Or $iStep = $nIndex
        ;=================================================
        ; 返回执行结果
        ;=================================================
        If Not $asResult[0] Then $asResult[0] = "0.0.0.0"
        Return($asResult)
EndFunc   ;==>fn_GetWanIP

SmtpMailer.au3

#Include <file.au3>
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
;~ $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
;~ If @error Then
;~    MsgBox(0, "Error sending message", "Error code:" & @error & "    Description:" & $rc)
;~ EndIf
;

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
    $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body,"<") and StringInStr($as_Body,">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull ($S_Files2Attach[$x])
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment ($S_Files2Attach[$x])
            Else
                $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
                SetError(1)
                return 0
            EndIf
        Next
    EndIf
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
    If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $Ssl Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
;Update settings
    $objEmail.Configuration.Fields.Update
; Sent the Message
    $objEmail.Send
    if @error then
        SetError(2)
        return $oMyRet[1]
    EndIf
EndFunc ;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description,3)
    ConsoleWrite("### COM Error !    Number: " & $HexNumber & "    ScriptLine: " & $oMyError.scriptline & "    Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
EndFunc ;==>MyErrFunc

本原创文章未经允许不得转载 | 当前页面:╃苍狼山庄╃ » 动态IP地址监控器

评论

文章评论已关闭!