[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]VBS邮件自动发送出错

打算做一个报警信息邮件自动发送,由于DELL的服务器自带的监控软件(Openmanager)无法实现自动发送邮件,当机器有故障时,他只能运行指定的程序,所以从网上找了一个VBS,希望能达到预期的效果,可是情况不容乐观,问题好像出在Smtp那里,可是这个smtp的地址我在其他的应用程序中也在用,是没有问题的,不知道各位是否能帮个忙,谢谢了。

代码如下:
  1. For counter = 1 To 3 Step 1
  2.     SendMail
  3. Next
  4. Public Sub SendMail
  5. NameSpace = "http://schemas.microsoft.com/cdo/configuration/"
  6. Set Email = CreateObject("CDO.Message")
  7. Email.From = "Server"                    '发件人名称
  8. Email.To = "test@163.com"                    '收件人邮件地址
  9. Email.Subject = GetIP&" 温度告警!"                '邮件主题
  10. Email.Textbody="Test"                    '邮件内容
  11. With Email.Configuration.Fields
  12.      .Item(NameSpace&"sendusing") = 2
  13.      .Item(NameSpace&"smtpserver") = "smtp.163.com"        'SMTP服务器地址
  14.      .Item(NameSpace&"smtpserverport") = 25            'SMTP服务器端口
  15.      .Item(NameSpace&"smtpauthenticate") = 1            'SMTP身份验证
  16.      .Item(NameSpace&"sendusername") = "test"            '发件帐号
  17.      .Item(NameSpace&"sendpassword") = "test"            '发件密码
  18.      .Update
  19. End With
  20. Email.Send
  21. End Sub
  22. Public Function GetIP
  23. ComputerName="."
  24. Dim objWMIService,colItems,objItem,objAddress
  25. Set objWMIService = GetObject("winmgmts:\\" & ComputerName & "\root\cimv2")
  26. Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
  27. For Each objItem in colItems
  28.     For Each objAddress in objItem.IPAddress
  29.         If objAddress <> "" then
  30.            GetIP = objAddress
  31.            Exit Function
  32.         End If
  33.     Next
  34. Next
  35. End Function
复制代码

这个报错,我记得是帐号和密码没能通过服务器。。。

有可能我记错。。。
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

回复 2楼 的帖子

你指的是这一段代码里面的帐号吗?》、


.Item(NameSpace&"sendusername") = "test"            '发件帐号
     .Item(NameSpace&"sendpassword") = "test"            '发件密码


可是我已经测试过这个帐号了,通过webmail测的这个帐号。

TOP

我没怎么看代码。。。

http://www.robvanderwoude.com/vbstech_internet_email.php

这是个发送邮件的实例,你可以修改下代码自己用。。。
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

回复 4楼 的帖子

看着有点吃力的,我需要改那些内容?

我的目的是,想得到服务器当前的温度值,如果值大于某个数,他就会自动发送邮件到指定的邮箱。

TOP

那网页已经做好函数了,如果懒可以直接复制整个function,然后调用
EMail( myFrom, myTo, mySubject, myTextBody, myHTMLBody, myAttachment, mySMTPServer, mySMTPPort )
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

好,我再试试,谢谢。
有问题我会继续的

TOP

回复 6楼 的帖子

劳驾

请指点

TOP

为何不说一下你是如何调用的呢?(代码)
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 9楼 的帖子

TOP

问题已解决。其实只要这一段代码就可以了
  1. For counter = 1 To 3 Step 1
  2.     SendMail
  3. Next
  4. Public Sub SendMail
  5. NameSpace = "[url=http://schemas.microsoft.com/cdo/configuration/]http://schemas.microsoft.com/cdo/configuration/[/url]"
  6. Set Email = CreateObject("CDO.Message")
  7. Email.From = "Server"                    '发件人名称
  8. Email.To = "[email=test@163.com]test@163.com[/email]"                    '收件人邮件地址
  9. Email.Subject = " 温度告警!"                '邮件主题
  10. Email.Textbody="Test"                    '邮件内容
  11. With Email.Configuration.Fields
  12.      .Item(NameSpace&"sendusing") = 2
  13.      .Item(NameSpace&"smtpserver") = "smtp.163.com"        'SMTP服务器地址
  14.      .Item(NameSpace&"smtpserverport") = 25            'SMTP服务器端口
  15.      .Item(NameSpace&"smtpauthenticate") = 1            'SMTP身份验证
  16.      .Item(NameSpace&"sendusername") = "test"            '发件帐号
  17.      .Item(NameSpace&"sendpassword") = "test"            '发件密码
  18.      .Update
  19. End With
  20. Email.Send
  21. End Sub
复制代码
谢谢各位关注!!

TOP

回复 11楼 的帖子

你确定可以吗?
SendMail与下面的GetIP函数根本不相关。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表