Powershell发送Gmail超时

时间:2014-05-05 16:20:11

标签: email powershell gmail

我试图找出如何让PowerShell V3使用gmail SMTP发送邮件。

我一直在研究一整天而且必须遗漏一些东西,因为我无法通过超时错误...当前的代码如下,但我尝试了很多不同的代码片段无济于事:

   
$sender = "support@domain.co.uk"
$recipient = "tim@doamin.co.uk"
$subject = "subject here"
$body = "test text here"

$sc = new-object Net.Mail.SmtpClient("smtp.gmail.com", 465);
$sc.EnableSsl = $true;
$cred = New-Object System.Net.NetworkCredential("username", "password");
$sc.Credentials = $cred;
$emsg = new-Object System.Net.Mail.MailMessage($sender, $recipient, $subject, $body);

$sc.Send($emsg);

当我跑步时,我得到:

Exception calling "Send" with "1" argument(s): "The operation has timed out."
At C:\Users\Tim\Desktop\Untitled8.ps1:13 char:1
+ $sc.Send($emsg);
+ ~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SmtpException

所以我尝试使用不同的'发送'陈述和方法,如:

$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

同样的事情 - 超时错误......

所以,尝试关闭防火墙和AV等 - 没有区别....所以尝试运行Wireshark和网络监视器 - 无法看到TLS握手所以假设这可能是为什么它的超时....在同一台计算机上的Chrome上设置gmail,并且可以在跟踪中看到TLS握手,并且发送电子邮件可以正常工作。

所以,它是用户错误:-)而且我做了一些疯狂的事情 - 还是一些非常奇怪的事情?

测试环境是单个Windows 7旗舰版(完全修补和更新) - >开关 - >路由器 - >互联网(> 20mbps)

在我对任何剩余的理智遗迹失去控制之前,我们将非常感激任何帮助。 : - )

1 个答案:

答案 0 :(得分:2)

嗯......使用端口587:

   
$sc = new-object Net.Mail.SmtpClient("smtp.gmail.com", 587);