使用VBscript通过电子邮件发送文本

时间:2014-10-20 05:59:55

标签: email vbscript

我尝试了以下代码,没有抛出任何错误。并且没有发送任何电子邮件。

Dim i, objEmail

' Use custom error handling
On Error Resume Next

Set objEmail = CreateObject( "CDO.Message" )

' Fill in the field values
With objEmail
    .From     = "xyz@abc.com"
    .To       = "pqr@abc.com"
    .Subject  = "Test"
    .TextBody = "Email from VB Script" 

If mySMTPPort = "" Then
        mySMTPPort = 25
    End If

With .Configuration.Fields
        .Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"      ) = 2
        .Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"     ) = "HostNameHere"
        .Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ) = 25
        .Update
    End With
    .Send
End With
' Return status message
If Err Then
    EMail = "ERROR " & Err.Number & ": " & Err.Description
    Err.Clear
Else
    EMail = "Message sent ok"
End If

' Release the e-mail message object
Set objEmail = Nothing

当我执行这个VBS文件时,它什么也没做。请帮帮我。我必须将简单的文本电子邮件从我的域发送到另一个域。或者是否有我想要执行的任务的工作?

2 个答案:

答案 0 :(得分:0)

尝试发送邮件时,您可能会收到错误消息。但是,您启用了错误处理(On Error Resume Next),但您的错误处理程序只是将错误信息放入变量中,而不对该变量实际执行任何操作。添加一个回显变量的行应该为您提供有关正在进行的操作的更多信息:

If Err Then
    EMail = "ERROR " & Err.Number & ": " & Err.Description
    Err.Clear
Else
    EMail = "Message sent ok"
End If
WScript.Echo EMail

应该为您提供有关正在进行的更多信息。

修改:显然您遇到了连接错误。有几种可能的原因。首先检查您的名称解析是否正常工作:

nslookup HostNameHere

如果名称无法解析,请使用脚本中的IP地址或修复名称解析。

接下来检查您是否可以通过名称和IP地址连接到远程主机上的端口25:

telnet HostNameHere 25
telnet a.b.c.d 25

如果你得到这样的结果:

C:\>telnet HostNameHere 25
Connecting To HostNameHere...Could not open connection to the host, on port 25:
Connect failed

阻止你的连接。可能是网络防火墙,远程主机上的基于主机的防火墙,或者首先不在端口25上侦听的服务。请咨询您的网络管理员和/或邮件服务器的管理员。

答案 1 :(得分:-1)

您的代码隐藏了错误。错误的默认属性是数字。所以你说如果err.number = 0(与false相同)那么错误,如果err.number不是0(即错误)一切都很好。