2013-08-20 73 views
1

我有一项服务需要发送有关失败的自动电子邮件。我觉得我有它设置了,但我一直收到以下错误:发送自动邮件

Service not available, closing transmission channel. The server response 
was: 4.3.2 Service not available 

我不能完全弄清楚我哪里错了,但这里是我的代码:

public static void AutoEmail() 
{ 
    try 
    { 
     SmtpClient newClient = new SmtpClient(); 
     newClient.Host = "host name"; 
     newClient.Port = Port number; 
     newClient.Credentials = new System.Net.NetworkCredential(
     "username", "password"); 

     MailMessage mail = new MailMessage(); 
     mail.To.Add(new MailAddress("[email protected]")); 
     mail.Body = "This is a test message."; 
     mail.Subject = "Test - " + DateTime.Now; 
     mail.From = new MailAddress("[email protected]"); 

     newClient.Send(mail); 
    } 
    catch (Exception ex) 
    { 
     Log.WriteException("Error in Email", ex); 
    } 
} 

任何帮助将非常感谢。谢谢!

+0

此时你得到的例外? – Rohit

+0

一旦它碰到说'newClient.Send(mail);'的行,就会触发catch。 – scapegoat17

+0

可能的重复[服务器响应是:4.3.2服务不可用,关闭传输通道](http://stackoverflow.com/questions/12732859/the-server-response-was-4-3-2-service- not-available-closing-transmission-chann) – DaveShaw

回答

2

您确定您使用的SMTP服务器允许应用程序发送电子邮件吗?我遇到过类似的问题,根本原因是由于权限不足,Exchange服务器拒绝发送请求。我的代码中的步骤与您的步骤相同。检查权限。

+0

有没有可以检查的方法? – scapegoat17

+0

如果您使用Exchange服务器,则服务器管理员将为您提供帮助。 – Vishy

+0

您在NetworkCredential中指定的“用户名”应具有发送电子邮件的权限。同时检查端口号是否正确。您可以注释掉代码中的端口设置,将其设置为默认的SMTP端口。 – Vishy

1

你试过

newClient .UseDefaultCredentials = true; 

帮助?

SMTP服务器名称仅适用于包含该SMTP服务器的网络中的计算机。

+0

我明白你的意思了,但不幸的是它似乎没有帮助。在同一点仍然得到相同的例外。 – scapegoat17

0

您需要确保程序中的SMTP服务器的主机名和端口号是否正确。程序中的所有其他代码看起来都很好。 我以前遇到过同样的错误。最后,我改变了正确的主机名和端口号,一切正常。 例如,Outlook.com或Hotmail电子邮件帐户

host="smtp-mail.outlook.com" port="25" enableSsl="true" 

https://www.outlook-apps.com/outlook-com-pop-settings/