【发布时间】:2014-08-09 08:30:29
【问题描述】:
代码在本地机器上运行,但我得到的目标机器是一台:
"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);
它可以在一台机器上工作,但不能在另一台机器上工作,所以我假设有一些网络权限限制。
【问题讨论】:
-
这里有数百万个可能的问题。 What have you tried?
-
相同的代码在(我的)本地机器上工作。我基本上想知道是否可以将权限设置为仅允许某些应用程序访问套接字。或者可能读取了一些登录权限。我不知道。
-
网络管理员可能在没有特定权限的情况下锁定了该端口。
-
当然。这完全取决于用户/应用程序的安全上下文和权限
-
浏览器通过不同的开放端口。 587 是主要用于 smtp 的特定端口。任何端口都可以出于任何原因重新利用,即使是出于恶意目的。出于这个原因,网络管理员通常会根据需要阻止所有端口并列入白名单。浏览器中的 Gmail 就像查看任何其他网站一样。
标签: c# smtpclient