如何使用vbscript和远程smtp服务器发送电子邮件。我通过代理连接

时间:2011-02-12 20:17:52

标签: email vbscript smtp gmail

我尝试使用gmail smtp将vbscript写入邮件,但由于我通过代理连接到互联网,因此无效。 以下是我的代码。


Set objMessage = CreateObject("CDO.Message") 
objMessage.Subject = "Example CDO Message" 
objMessage.From = "myemail@gmail.com" 
objMessage.To = "tomail@gmail.com" 
objMessage.TextBody = "This is some sample message text."

'==This section provides the configuration information for the remote SMTP server.
'==Normally you will only change the server name or IP.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 

'Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

'Server port (typically 25)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "MyUserName"

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "MyPassword"


objMessage.Configuration.Fields.Update

'==End remote SMTP server configuration section==

objMessage.Send

当我运行此代码时,它给出了错误“传输无法连接到服务器” 任何人都可以给我一个例子。我通过代理连接到互联网。

感谢 瓦卡

3 个答案:

答案 0 :(得分:1)

由于您的代码无法连接到服务器,甚至在担心代码之前,您是否确保可以在该端口上完全连接到服务器?

检查此问题的最简单方法是Telnet。假设您的计算机上安装了Telnet,只需打开命令提示符并键入telnet smtp.gmail.com 465即可。如果失败,那么您的代码也无法执行此操作。这种失败的最常见原因是由于防火墙阻止您使用端口465,并且因为您提到代理,我认为这也可能是一个问题。

如果您确实设法在该端口上进行连接,请参阅此question的已接受答案以获取示例vbscript代码(并且还建议您可以使用简单的SMTP命令行工具,如果这样可以更好地工作)

答案 1 :(得分:1)

另一件需要注意的事情(我有同样的问题)是确保适配器上的DNS设置正确。

我给了我的服务器静态IP,但我想跳过了DNS服务器地址,所以无法解决任何问题。只是我的疏忽,但我想我会提到它。

答案 2 :(得分:0)

在使用Internet代理时,需要使用urlproxyserver Field进行连接。这样的事情需要做:

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/urlproxyserver") = "yourproxy:port" 

此外,如果您使用代理但连接到本地IP,则可能需要跳过代理扫描。这可以使用urlproxybypass Field来完成,它应该像下面这样使用

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/urlproxybypass") = "<local>"

可以找到更多信息herehere。可以找到一个示例here

希望这会有所帮助。