“无法连接到远程服务器”错误
问题描述:
我试图从我的网站发送电子邮件。“无法连接到远程服务器”错误
这是我的代码:
public string SendEmail()
{
string sMessage;
SmtpClient smtpClient = new SmtpClient("mail.test.com",25);
MailMessage message = new MailMessage();
try
{
smtpClient.Credentials = new System.Net.NetworkCredential("web", "test1234", "myDomain");
MailAddress fromAddress = new MailAddress("[email protected]", "web");
message.From = fromAddress;
message.To.Add("[email protected]");
message.Subject = "test";
message.Body = "TEST";
message.IsBodyHtml = true;
smtpClient.EnableSsl = false;
smtpClient.Send(message);
sMessage = "Email sent.";
}
catch (Exception ex)
{
sMessage = "Coudn't send the message!\n " + ex.Message;
}
return "";
}
但我发现了以下错误:
"Unable to connect to the remote server"
数据(主机名,端口,证书)是正确的,我检查了它的几个SMTP检查器(例如this one),它工作正常。
我什么都试过了我在网上找到:
smtpClient.UseDefaultCredentials = false;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
而且不同的端口,但没有任何帮助,我不断收到错误。
我在做什么错?我错过了什么吗?
答
相反的:
smtpClient.Credentials = new System.Net.NetworkCredential("web", "test1234", "myDomain");
尝试:
smtpClient.Credentials = new System.Net.NetworkCredential("emailaddress", "password");
这里是任务的一个例子,我用它来发送电子邮件:
public Task SendEmail(string email, string subject, string body)
{
try
{
var mailClient = new SmtpClient
{
Host = "mail.mydomain.com",
Credentials = new NetworkCredential("[email protected]", "mypasword"),
Port = myport,
DeliveryMethod = SmtpDeliveryMethod.Network
};
var msg = new MailMessage("from email", email, subject,body) {IsBodyHtml = true};
mailClient.Send(msg);
return Task.FromResult(0);
}
catch (Exception ex)
{
return null;
}
}
答
我有同样的问题。控制台应用程序使用系统的代理,但Web应用程序不...您可能会错过设置客户端服务对象的代理属性。我的问题是通过这种方式解决的。希望它会有帮助。
答
使用类似的模式,我的其余客户端正在调用服务API,该服务在调试时调用成功,但未在发布的代码上工作。 错误是:无法连接到远程服务器。
内部异常:System.Net.Sockets.SocketException(0X80004005):无连接可以作出,因为目标机器积极地拒绝它serviceIP:443 在System.Net.Sockets.Socket.DoConnect(端点endPointSnapshot,为SocketAddress为SocketAddress) 在System.Net.ServicePoint.ConnectSocketInternal(布尔connectFailure,插座S4,S6插座,插座&插座,ip地址&地址,ConnectSocketState状态,IAsyncResult的asyncResult,异常&除外)
分辨率:设置代理在Web配置中。
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy proxyaddress="http://proxy_ip:portno/" usesystemdefault="True"/>
</defaultProxy>
</system.net>
您是否检查防火墙? – Sybren
@Sybren是的,我查过了,它的25号码头开放。 – user3378165