System.Net.Mail.SmtpException:发送邮件失败。无法从传输连接中读取数据

时间:2013-04-29 20:14:36

标签: c# smtp

这是相关代码(C#)

                    MailMessage m;
                    SmtpClient client;   

                    client.Host = "smtp.mail.yahoo.com";
                    client.Port = 465;  
                    client.EnableSsl = true;
                    client.Credentials = new NetworkCredential("mymail@yahoo.com", "mypassword");

                    m = new MailMessage();
                    m.From = new MailAddress("mymail@yahoo.com");
                    m.To.Add(new MailAddress("anothermail@gmail.com"));
                    m.Subject = "My subject";
                    m.Body = "This is my body. ";

                    client.Send(m);

这是完整的错误跟踪

System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   --- End of inner exception stack trace ---
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.DelegatedStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.BufferedReadStream.Read(Byte[] buffer, Int32 offset, Int32 count)
   at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
   at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)
   at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpClient.GetConnection()
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   --- End of inner exception stack trace ---
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at EmailSender.EmailSenderForm.send() in c:\Users\Ankur\Documents\Visual Studio 2012\Projects\EmailSender\EmailSender\EmailSenderForm.cs:line 91

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

据我所知,雅虎不允许第三方邮件客户端运营其帐户。这就是为什么你需要使用Thunderbird的webmail扩展。雅虎为这些服务提供Yahoo Mail Plus。您可以在Gmail中使用其他邮件帐户试用您的应用程序吗?它应该工作正常。

我为Outlook帐户配置了此代码,用于发送电子邮件。我有两年的工作没有任何修改。它应该开箱即用(只需更改帐户名称):

MailMessage mm = new MailMessage(@"example@hotmail.com",
                     dest, textBox1.Text, richTextBox1.Text);
SmtpClient client = new SmtpClient("smtp.live.com", 587);
client.Credentials = new NetworkCredential(@"examplehotmail.com", "password");
client.EnableSsl = true;
messageSent = false;
client.SendAsync(mm, null);
client.SendCompleted += SentMessageTrigger;

我希望它有所帮助。