SMTP电子邮件发送

13

连接失败,因为目标机器拒绝了127.0.0.1:25上的请求。

异常信息: System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:25

源错误:

在当前网页请求执行期间出现未处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及代码中的错误位置。

堆栈跟踪:

[SocketException (0x274d): No connection could be made because the target machine actively refused it 127.0.0.1:25] System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +239
System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP) +35
System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) +224

[WebException: Unable to connect to the remote server]
System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6, Int32 timeout) +5483819
System.Net.PooledStream.Activate(Object owningObject, Boolean async, Int32 timeout, GeneralAsyncDelegate asyncCallback) +202
System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback) +21
System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) +332 System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port) +160
System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port) +159
System.Net.Mail.SmtpClient.GetConnection() +35 System.Net.Mail.SmtpClient.Send(MailMessage message) +1213

[SmtpException: Failure sending mail.] System.Net.Mail.SmtpClient.Send(MailMessage message) +1531
Checkout.btnSend_Click(Object sender, EventArgs e) +2675
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
在真实连接中无法发送邮件,但在我的本地可以。

请大家帮帮忙。

System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

版本信息:Microsoft .NET Framework Version:2.0.50727.3615; ASP.NET Version:2.0.50727.3618

这是我的C#代码。

        SmtpClient SmtpMail = new SmtpClient();
        SmtpMail.Host = "localhost";

        //delete session cookie
        Response.Cookies["session"].Expires = DateTime.Now.AddYears(-30);

        SmtpMail.Send(objEmail);

5
你的计算机上是否安装了邮件服务器?你尝试过输入命令 telnet localhost 25 吗? - Daniel Hilgarth
你使用的是哪个SMTP服务器? - Enrico Campidoglio
...不要忘记检查你的(Windows)防火墙... - m0sa
你的本地主机配置为SMTP服务器了吗? - rlibby
您可能还需要提供一些身份验证。而且您确定要从本地主机发送邮件吗? - Pleun
@m0sa:防火墙通常会默默地吞噬数据包,因此您往往会遇到超时而不是主动拒绝连接。 - forsvarir
2个回答

21

你忘记在那台机器上启动SMTP服务器了

请不要告诉我你在那台机器上没有SMTP服务器。但是,如果你必须这样说,可以参考这页。

即使你配置了本地SMTP服务器,你的电子邮件很可能会被归为垃圾邮件。最好使用你的电子邮件提供商的SMTP服务器。如果你正在使用Gmail,请看看这里


但是在我的情况下,尽管SMTP服务已经开启且SMTP服务器正常运行,我仍然遇到了相同的127.0.0.1:25错误。之前它是可以工作的,但突然间停止了,可能是由于某种安全设置更改(但不是SMTP中的设置)。 - Dexter

2
我安装了smtp服务,但未启动时出现了错误。如果要在已安装smtp的本地机器上启动服务,请按照以下步骤进行:
  1. 打开服务器管理器
  2. 选择本地服务器
  3. SERVICES下的筛选框中键入"smtp"(参见图像)
  4. 右键单击简单邮件传输协议服务(SMTP)并选择启动服务

Server manager with Local Server selected and services filtered to smtp


2
这对我有用。但是由于某种原因,我不得不将启动类型设置为自动,因为它处于手动状态... - VDWWD
@VDWWD 我这周也刚好做了同样的事情。 - Tony L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接