代码在本地计算机上运行,但我得到的目标机器之一:
"Unable to connect to the remote server"
和
"An attempt was made to access a socket in a way forbidden by its access
permissions xxx.xxx.xxx.xxx:587"
在这台机器上执行此操作可能会被拒绝吗?我可以通过网络浏览器访问gmail。
代码是这样的(来自SO):
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("your mail@gmail.com");
mail.To.Add("to_mail@gmail.com");
mail.Subject = "Test Mail - 1";
mail.Body = "mail with attachment";
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
mail.Attachments.Add(attachment);
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("your mail@gmail.com", "your password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
它可以在一台机器上运行,但不能在另一台机器上运行,所以我假设有一些网络权限限制。
答案 0 :(得分:1)
您可以调整SendMail方法用于显式使用端口25而不是587吗?鉴于您对gmail的评论,您是否提供了用户名/密码以及您要发送的消息?如果您在构建/发送消息的位置发布代码段,则可以更轻松地进行故障排除。
修改: 要真正测试以查看该网络管理员是否阻止该端口,请使用telnet。它是免费的:http://technet.microsoft.com/en-us/library/cc771275(v=ws.10).aspx
启动cmd提示符,并尝试连接到公共SMTP端口上的邮件服务器。这将明确告诉您是否被阻止。有关如何连接到特定端口上的某些内容的命令参考,请参阅此TechNet文章: http://technet.microsoft.com/en-us/library/bb491013.aspx
答案 1 :(得分:1)
你检查过防火墙&它失败的机器的AV软件?我以前一直被这个咬过。
答案 2 :(得分:1)
看起来您需要与网络管理员联系,以确保在该服务器上打开所有必需的端口。它们默认阻止端口并根据需要将它们列入白名单。