2017-05-27 72 views
0

我有一个winforms应用程序,通过Gmail发送电子邮件。 它工作的很好,但在一种情况下,发送失败,我得到上述错误。 当我的应用程序在通过RDP连接访问的计算机上运行时发生。 我至今尝试没有成功:通过Gmail发送电子邮件c#错误#10051网络无法访问

  1. 禁用Windows防火墙
  2. 禁用Microsoft安全Essensials。
  3. 确保没有安装其他防病毒程序。
  4. 将587端口添加到出站的rull。

我的代码如下:(请注意,此代码工作在所有情况下,但这)

string fromAddress = txtFrom.Text.Trim(); 
       string toAddress = txtTo.Text.Trim(); 
       string fromPassword = ePassword; 
       string subject = txtSubject.Text; 
       string body = txtMessage.Text; 

       var smtp = new SmtpClient 
       { 
        Host = "smtp.gmail.com", 
        Port = 587, 
        EnableSsl = true, 
        DeliveryMethod = SmtpDeliveryMethod.Network, 
        UseDefaultCredentials = false, 
        //Credentials = new NetworkCredential(fromAddress.Address, fromPassword) 
        Credentials = new NetworkCredential(fromAddress, fromPassword) 
       }; 
       //using (var message = new MailMessage(fromAddress, toAddress) 
       using (var message = new MailMessage() 
       { 
        From = new MailAddress(fromAddress, eDisplayName), 
        Subject = subject, 
        Body = body 
       }) 
       { 
        // Check for recipiens 
        if (txtTo.Text.Trim() != "") 
        { 
         foreach (string email in txtTo.Text.Split(';')) 
         { 
          message.To.Add(email.Trim()); 
         } 
        } 
        // check for copies 
        if (txtCopy.Text.Trim() != "") 
        { 
         foreach (string email in txtCopy.Text.Split(';')) 
         { 
          message.CC.Add(email.Trim()); 
         } 
        } 
        // check for blind copy 
        if (txtBlindCopy.Text.Trim() != "") 
        { 
         foreach (string email in txtBlindCopy.Text.Split(';')) 
         { 
          message.Bcc.Add(email.Trim()); 
         } 
        } 
        //check for attachments 
        for (int i = 0; i < clbAttachments.Items.Count; i++) 
        { 
         if (clbAttachments.GetItemChecked(i) == true) 
         { 
          Attachment attachment = new Attachment(clbAttachments.Items[i].ToString()); 
          message.Attachments.Add(attachment); 
         } 
        } 

        smtp.Send(message); 
        return true; 
+1

RDP中的网络类型是什么?如果远程计算机位于正在使用Outlook的网络中,则可能永远无法使其工作。可能有一个阻止电子邮件的代理服务器。代理服务器会自动获取包括端口587在内的所有电子邮件端口号。因此,代理服务器必须设置为允许发送您的电子邮件。代理服务器将自动将电子邮件转发到Outlook服务器。 – jdweng

+0

如何检查代理服务器设置? 远程计算机不在我的本地网络中。 我从第三方购买了远程服务器。 – subirshan

+0

首先检查控制面板:用户帐户:电子邮件。防火墙可能设置为端口转发电子邮件端口。所以看到这篇文章:https://www.pcsteps.com/1154-port-forwarding-router-windows-firewall/ – jdweng

回答

0

找到了答案。我已将端口更改为25,并且发送了消息!我将所有更改回滚到操作系统,并进行双重检查,以确保端口更改是唯一需要完成的事情。希望有人会发现这个有用的。

编辑: 端口25是一个非安全端口。就我而言,我不在乎,所以它解决了我的问题。

相关问题