我尝试使用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
当我运行此代码时,它给出了错误“传输无法连接到服务器” 任何人都可以给我一个例子。我通过代理连接到互联网。
感谢 瓦卡
答案 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>"
希望这会有所帮助。