【发布时间】:2014-01-07 06:40:18
【问题描述】:
我在http://SomeDomain.com 上有一个网站。当我从任何计算机访问该域时,我都可以访问该网站。如果我然后去同一个域,但从托管该网站的服务器,我将无法访问该网站。好像防火墙不会启用连接。
我知道我可以从该服务器中转到http://localhost 以访问该网站。
无论如何问题是我无法从该服务器发送电子邮件我有以下代码可以发送电子邮件:
public static void SendEmail(string toEmailAddress, string subject, string body)
{
var fromAddress = new MailAddress("sales@domainName.com", "domainName");
var toAddress = new MailAddress(toEmailAddress);
string fromPassword = "MY_PASSWORD";
var smtp = new SmtpClient
{
Host = "mail.toglcloud.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential("v040\\sales.domainName", fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
smtp.Send(message);
}
}
当我从任何计算机(我已经尝试过 5 种不同的)运行该代码时,它就可以工作了!但是,如果我在服务器(计算机托管网站并包含邮件服务器)上运行该确切代码,则它不起作用。我得到以下异常:
System.Net.Mail.SmtpException:发送邮件失败。 ---> System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:连接尝试失败 因为连接方在一段时间后没有正确响应 时间,或建立连接失败,因为连接的主机有 未能响应 206.155.112.15:587 System.Net.Sockets.Socket.DoConnect(端点 endPointSnapshot, SocketAddress 套接字地址)在 System.Net.ServicePoint.ConnectSocketInternal(布尔连接失败, Socket s4, Socket s6, Socket&socket, IPAddress&地址, ConnectSocketState 状态、IAsyncResult asyncResult、Int32 超时、 异常&异常)---内部异常堆栈跟踪结束---
我认为这与我找不到端点 http://SomeDomain.com
【问题讨论】:
-
Mayby 在任何配置文件(我猜是电子邮件程序服务器的配置)中的任何地方都有一行表示允许/阻止本地地址。也许如果你改变它,它会修复......
-
另外,this answer 可能会有所帮助
-
我创建了一个控制台应用程序而不是网站,我得到了同样的异常。一旦我让它在控制台应用程序上运行,我就会将该代码放在网站上。
-
嗯,关键是您的计算机/服务器找不到 SMTP 主机(同一台计算机?!?)。那么你能检查一下 SMTP 服务器是否在
port 587上列出了吗? -
我已经尝试过
SmtpDeliveryMethod.PickupDirectoryFromIis,当我尝试死亡时,我得到了一个不同的异常说System.Net.Main.SmtpExeption: Cannot get IIS pickup directory....,尽管我很感激你的帮助:)
标签: c# email smtp exchange-server