Board logo

标题: [问题求助] [已解决]VBS邮件自动发送出错 [打印本页]

作者: endy421    时间: 2009-8-19 10:53     标题: [已解决]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
复制代码

作者: defanive    时间: 2009-8-19 11:21

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

有可能我记错。。。
作者: endy421    时间: 2009-8-19 11:27     标题: 回复 2楼 的帖子

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


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


可是我已经测试过这个帐号了,通过webmail测的这个帐号。
作者: defanive    时间: 2009-8-19 11:46

我没怎么看代码。。。

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

这是个发送邮件的实例,你可以修改下代码自己用。。。
作者: endy421    时间: 2009-8-19 12:01     标题: 回复 4楼 的帖子

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

我的目的是,想得到服务器当前的温度值,如果值大于某个数,他就会自动发送邮件到指定的邮箱。
作者: defanive    时间: 2009-8-19 12:24

那网页已经做好函数了,如果懒可以直接复制整个function,然后调用
EMail( myFrom, myTo, mySubject, myTextBody, myHTMLBody, myAttachment, mySMTPServer, mySMTPPort )
作者: endy421    时间: 2009-8-19 12:43

好,我再试试,谢谢。
有问题我会继续的
作者: endy421    时间: 2009-8-19 13:04     标题: 回复 6楼 的帖子

劳驾

请指点
作者: zqz0012005    时间: 2009-8-19 13:19

为何不说一下你是如何调用的呢?(代码)
作者: endy421    时间: 2009-8-19 13:46     标题: 回复 9楼 的帖子

麻烦看一下这里:
http://www.smallrascal.cn/smallrascal/article.asp?id=1116

谢谢
作者: endy421    时间: 2009-8-19 15:42

问题已解决。其实只要这一段代码就可以了
  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
复制代码
谢谢各位关注!!
作者: zqz0012005    时间: 2009-8-19 16:01     标题: 回复 11楼 的帖子

你确定可以吗?
SendMail与下面的GetIP函数根本不相关。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2