我尝试使用C#控制台发送电子邮件,但每次都失败并显示错误:
Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions 173.194.65.109:587
这是我的C#代码:
SmtpClient client = new SmtpClient();
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
client.Host = "smtp.gmail.com";
client.Port = 587;
// setup Smtp authentication
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("myEmail@gmail.com", "myPassword");
client.UseDefaultCredentials = false;
client.Credentials = credentials;
MailMessage msg = new MailMessage();
msg.From = new MailAddress("myEmail@gmail.com");
msg.To.Add(new MailAddress("destinationEmail@gmail.com"));
msg.Subject = "This is a test Email subject";
msg.IsBodyHtml = true;
msg.Body = string.Format("<html><head></head><body><b>Test HTML Email</b></body>");
client.Send(msg);
我也尝试过使用:
client.UseDefaultCredentials = true;
但仍未成功。
这是一个通用的C#代码,写在每个论坛的网络上......但它对我没有帮助。
答案 0 :(得分:0)
我可以在这里想到2个问题。 第一个端口587没有打开,这是非常不可能的,因为它是邮件的标准端口,但你永远不知道。
第二,你的代码看起来很好,但你可能忘记了app.config文件中的一些部分。我怀疑这样的事情。
<system.net>
<mailSettings>
<smtp>
<network host="mail.OurOrganisationEmail@ourdomain.com" port="9999" userName="OurOrganisationEmail@ourdomain.com" password="OurOrganisationEmailPassword"/>
</smtp>
</mailSettings>
</system.net>
答案 1 :(得分:0)
我能想到的唯一原因是你的网络(软件或硬件防火墙,路由器或调制解调器)阻止587或GMail服务器上的传出流量昨天出现问题。但是,587是一个标准的SMTP SSL端口,并没有看到它被阻止的原因,因为MS Outlook等电子邮件客户端也会使用它。否则,你的代码很好(我的办公室测试正常)。你是对的,这是通过.net的SmtpClient发送电子邮件的标准代码。您可能想尝试使用GMail的端口465(非标准,但有时因遗留原因而使用),而不仅仅是为了了解您是否可以使用它。
GMail支持(https://support.google.com/mail/troubleshooter/1668960?hl=en&rd=1) -
外发邮件(SMTP)服务器:
smtp.gmail.com
使用身份验证:是
SSL端口:465或587
仅供参考,您可以放弃两者:
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
SMTP到GMail不需要它们。 UseDefaultCredentials 标志实际上可能会导致登录问题,如果您在设置凭据后设置了 不,不会< / strong>是你当前的问题)。如果您已将应用的(配置)默认投放方式设置为 SmtpDeliveryMethod.Network ,则只需要 DeliveryMethod 。