Skip to main content
 首页 » 编程设计

C# Winforms 应用程序发送电子邮件失败 : The remote name could not be resolved: 'smtp. gmail.com ;操作超时

2024年02月20日28zfyouxi

我的 WinForms C# 程序发送电子邮件。我使用过 MailMessage 和 SmtpClient。 在 SmtpClient 的构造函数中,我传递了 smtp.gmail.com 和端口 587。

这是在我 friend 的电脑上运行的,但是当我尝试它时我得到了这个错误:

System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebException: The remote name could not be resolved: 'smtp.gmail.com' 
 
System.Net.Mail.SmtpException: Operation Timed out 

如何修复此错误?为什么它特定于我的计算机?

If i use port 25 i get exception : Operation Timed out 
 
If i use port 587 i get exception : The remote name could not be resolved: 'smtp.gmail.com' 
 
if i use port 465 i get exception : Operation Timed out 

请您参考如下方法:

尝试一些基本的网络故障排除。首先,确保你可以通过 IP 地址 ping 某些东西,这不需要 DNS 工作,所以尝试 ping 173.194.41.86 看看你是否得到一些回复。

然后使用 ping www.gmail.com 从您的计算机 ping www.gmail.com。这应该告诉您您的网络是否可以将任何名称解析为 IP 地址。您应该在与上述相同的响应中获得四个 IP 地址 ping。

如果没有,那么您的 DNS 配置有问题。如果您有静态 IP 地址,则需要与网络管理员联系或将 DNS 服务器设置为与工作机器相同。如果它是动态的,那么您可以尝试 ipconfig/renew 从 DHCP 服务器获取最新设置。

如果 ping www.gmail.com 有效,则尝试 ping smtp.gmail.com 查看 smtp 主机是否正在解析。如果没有,则仍然存在 DNS 问题,但仅影响 smtp 主机名。

尝试 ipconfig/flushdns 清除本地 DNS 缓存,然后重试。如果不是在生产服务器上,请尝试重新启动。

您还可以使用 nslookup 检查 DNS 名称解析,也可以在 PowerShell 中使用 Resolve-DnsName,不过可能只在 3.0 中。

此外,检查所有防火墙设置。