0

我想从我的 vbscript 代码发送一封电子邮件,下面的代码在我的机器上正常工作,但是当我改变我的机器时,代码不再能够发送电子邮件。运行期间没有发生错误或问题,但没有发送/发送电子邮件。有没有其他人遇到过这样的问题?

Set objMessage = CreateObject("CDO.Message") 

With objMessage
    .From = SendFrom
    .To   = SendTo
    .Subject  = "Subject"
    .Textbody = ""
    .HTMLBody = "<b>Body</b>"
    With .Configuration.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing")      = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")     = "SMTP.Gmail.Com"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername")   = "Username"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")   = "Password"
        .Update
    End With

    .Send
End With
4

3 回答 3

1

如果它在您的机器上运行而不是在生产机器上运行,我想这是一个权限问题或防火墙问题。仔细看看有什么不同,一个在防火墙后面,另一个不在?

于 2013-02-18T16:39:12.763 回答
1

首先,由于您没有发布整个代码,请检查您的脚本是否包含一行

On Error Resume Next

如果是这样:删除该行并重试。

如果您的脚本中没有该行并且脚本没有引发错误并且您可以telnet mailserver 25,那么几乎可以肯定邮件服务器接受了邮件进行投递并且问题出在上游某处。检查邮件服务器日志。

您可以验证服务器是否真的接受这样的邮件:

C:\>telnet mailserver 25
220 mailserver ESMTP
HELO clientname
250 mailserver
MAIL FROM:<joe.average@example.com>
250 2.1.0 Ok
RCPT TO:<joe.average@example.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: test

test
.
250 2.0.0 Ok: queued as 4541E2227
QUIT

命令前面的行QUIT表示服务器接受了邮件。实际的响应文本可能会因使用的 MTA 而异,但每个 MTA 在接受消息时都会以类似的行进行响应。

于 2013-02-19T14:32:06.000 回答
0

您需要先安装 CDonts 库。在 microsoft.com 上搜索 CDONTS 库并安装它。

如果您想在不安装的情况下发送,请尝试第二种方法。你必须初始化对象。在该示例中,我删除了链接中的 h 因为我无法发布链接

  1. CDO.MESSAGE

    '脚本通过 QTP nice one 发送电子邮件 Set oMessage = CreateObject("CDO.Message")

    '==此部分提供远程 SMTP 服务器的配置信息。'==通常您只会更改服务器名称或 IP。oMessage.Configuration.Fields.Item _ ("ttp://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    '远程 SMTP 服务器的名称或 IP oMessage.Configuration.Fields.Item _ ("ttp://schemas.microsoft.com/cdo/configuration/smtpserver") =""

    '服务器端口(通常为 25)oMessage.Configuration.Fields.Item _ ("ttp://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

    oMessage.Configuration.Fields.Update oMessage.Subject = "测试邮件" oMessage.Sender = "" oMessage.To ="" 'oMessage.CC = "" 'oMessage.BCC = "" oMessage.TextBody = "来自 QTP 的测试邮件"&vbcrlf&"问候,"&vbcrlf&"测试" oMessage.Send

    设置 oMessage = 无

于 2013-02-20T18:33:01.593 回答