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