51Testing软件测试论坛

标题: 在win7系统下,QTP自动化测试,怎样通过vbs脚本自动发送邮件 [打印本页]

作者: jhoony1101    时间: 2012-4-28 17:01
标题: 在win7系统下,QTP自动化测试,怎样通过vbs脚本自动发送邮件
'---------------------------------------------------------------------------------
'函数名称 : SendMail
'函数功能 : 自动发送邮件功能
'函数输入:   SendTo----收件人,多个收件人可使用";"隔开
'                        MailTopic----邮件主题
'                        MailBody----邮件内容,此处内容格式为Html
'                        MailAttachment---邮件附件,多个附件可使用";"隔开
'函数输出:  Boolean,邮件是否发送成功   
'---------------------------------------------------------------------------------
Function SendMail(SendFrom,Password,SendTo,MailTopic,MailBody,MailAttachment)
        'On error resume next
        MS_Space = "http://schemas.microsoft.com/cdo/configuration/"
        Set Email = CreateObject("CDO.Message")
        Email.BodyPart.Charset = "GBK"
        Email.From = SendFrom
        Email.To = SendTo
        Email.Subject = MailTopic
        Email.Htmlbody = MailBody
        If MailAttachment <> "" Then
                For i=0 to Ubound(Split(MailAttachment,";"))
                        Email.AddAttachment Split(MailAttachment,";")(i)
                Next
        End If
        With Email.Configuration.Fields
                .Item(MS_Space&"sendusing") = 2
                .Item(MS_Space&"smtpserver") = "smtp."&Split(SendFrom,"@",-1, vbTextCompare)(1)
                .Item(MS_Space&"smtpserverport") = 25
                .Item(MS_Space&"smtpauthenticate") = 1
                .Item(MS_Space&"sendusername") =Split(SendFrom,"@",-1,vbTextCompare)(0)
                .Item(MS_Space&"sendpassword") = Password
                .Update
        End With
        Err.clear
        Email.Send
        If Err.number<>0 Then
                SendMail=False  
        Else
                SendMail=True
        End If
        Set Email=Nothing
End Function
这个方法之前在xp系统下是可以使用的,但是装了win7系统后就不可以用了,应该是COM组件有的方法不支持,求能够发送邮件的方法,我是菜鸟,希望大家指教,非常感谢
作者: SexyCat_1113    时间: 2012-4-29 14:59
不是创建outlook.application么
作者: hsjzfling    时间: 2012-5-2 11:48
outlook.application会有安全验证的问题,Outlook 2007以后就比较麻烦了,现在用CDO.Message较多。
我这边是win7+outlook2010,用这段代码是没有问题的
如果不成功的话,看下报错信息是什么
作者: jhoony1101    时间: 2012-5-13 16:14
回复 2# SexyCat_1113


    通过微软的outlook应该是可以的,但有其局限性,当时在win7系统下使用的时候,是".后面的方法不支持"
With Email.Configuration.Fields
                .Item(MS_Space&"sendusing") = 2
                .Item(MS_Space&"smtpserver") = "smtp."&Split(SendFrom,"@",-1, vbTextCompare)(1)
                .Item(MS_Space&"smtpserverport") = 25
                .Item(MS_Space&"smtpauthenticate") = 1
                .Item(MS_Space&"sendusername") =Split(SendFrom,"@",-1,vbTextCompare)(0)
                .Item(MS_Space&"sendpassword") = Password
                .Update
求高手帮我看看在win7系统下咋怎?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2