0
我有一个winforms应用程序,通过Gmail发送电子邮件。 它工作的很好,但在一种情况下,发送失败,我得到上述错误。 当我的应用程序在通过RDP连接访问的计算机上运行时发生。 我至今尝试没有成功:通过Gmail发送电子邮件c#错误#10051网络无法访问
- 禁用Windows防火墙
- 禁用Microsoft安全Essensials。
- 确保没有安装其他防病毒程序。
- 将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;
RDP中的网络类型是什么?如果远程计算机位于正在使用Outlook的网络中,则可能永远无法使其工作。可能有一个阻止电子邮件的代理服务器。代理服务器会自动获取包括端口587在内的所有电子邮件端口号。因此,代理服务器必须设置为允许发送您的电子邮件。代理服务器将自动将电子邮件转发到Outlook服务器。 – jdweng
如何检查代理服务器设置? 远程计算机不在我的本地网络中。 我从第三方购买了远程服务器。 – subirshan
首先检查控制面板:用户帐户:电子邮件。防火墙可能设置为端口转发电子邮件端口。所以看到这篇文章:https://www.pcsteps.com/1154-port-forwarding-router-windows-firewall/ – jdweng