SmtpClient.Send与System.FormatException失败:Smtp服务器返回无效响应

时间:2012-05-09 20:39:37

标签: c# .net

我正在尝试使用以下代码发送电子邮件:

//create the mail message
MailMessage mail = new MailMessage(from, to);

//set the content
mail.Subject = "This is a test email";
mail.Body = "this is the body content of the email.";

//send the message
string server = "smtp01.xyz.net";
SmtpClient smtp = new SmtpClient(server);
smtp.Credentials = new NetworkCredential(username, password); 
smtp.EnableSsl = enablessl;
try
{
    smtp.Send(mail);
}
catch (Exception ex)
{
    Exception ex2 = ex;
    string errorMessage = string.Empty;
    while (ex2 != null)
    {
        errorMessage += ex2.ToString();
        ex2 = ex2.InnerException;
    }
    Console.WriteLine(errorMessage);
}

生成的堆栈跟踪是:

System.Net.Mail.SmtpException: Failure sending mail. ---> System.FormatException: Smtp server returned an invalid response.
   at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine)
   at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
   at System.Net.Mail.ReadLinesCommand.Send(SmtpConnection conn)
   at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port)
   at System.Net.Mail.SmtpClient.Send(MailMessage message)

如果我在端口25上telnet到服务器,响应是:

220 smtp01.xyz.net ESMTP Postfix
EHLO test.com
250-smtp01.xyz.net
250-STARTTLS
250-SIZE 30000000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

我已尝试使用EnableSsl设置而未设置。

我不明白它认为无效的回应是什么?

2 个答案:

答案 0 :(得分:1)

您是否有机会使用ASP.net MVC?如果是这样,请确保在应用程序根目录中的正确web.config中声明/定义服务器SMTP服务器设置,而不是位于Views文件夹中的web.config中。

答案 1 :(得分:0)

我遇到了这个问题,原因是指定了以邮件而不是邮箱开头的服务器名称。这个错误让我失望,因为即使指定的SMTP服务器是问题的根源,SmtpClient的构造也没有像我尝试的其他几个服务器那样引发异常。错误消息使得它似乎与您发送的内容有关,但至少在我的情况下,它是指定的SMTP服务器。