0

私は この記事でOutlook2010を設定し、 yahoo.comから電子メールを送受信します。問題なく機能します。

アプリケーションでメールを送信する小さなアプリケーションを開発しましたが、エラーが発生しました。

"unable to read data from the transport connection:an exist connection was 
 forcibly closed by the remote host."

私のコード:

  try
        {

            SmtpClient smtp = new SmtpClient("smtp.mail.yahoo.com", 465);
            smtp.UseDefaultCredentials = true;
            smtp.EnableSsl = true;
            smtp.Credentials = new System.Net.NetworkCredential("myid", "mypass");

            smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

            MailMessage mailMessage = new MailMessage();
            mailMessage.From = new System.Net.Mail.MailAddress("myid@yahoo.com", "blabla");
            mailMessage.To.Add(new System.Net.Mail.MailAddress("xxx@live.com", "xxx@live.com"));
            mailMessage.Subject = "test";
            mailMessage.Body = "test";
            mailMessage.IsBodyHtml = false;

            mailMessage.SubjectEncoding = System.Text.Encoding.UTF8;
            mailMessage.BodyEncoding = System.Text.Encoding.UTF8;

            mailMessage.Priority = MailPriority.High;


            smtp.Send(mailMessage);

            Console.WriteLine("hooooooooooraaaaaaaaaaaaaaa");
            Console.ReadKey();
        }
        catch (Exception err)
        {

            Console.WriteLine(err.InnerException.Message);
            Console.ReadKey();
            return;
        }
4

1 に答える 1

0

MSDN から

一部の SMTP サーバーでは、サーバーが代わりに電子メールを送信する前に、クライアントが認証される必要があります。この SmtpClient オブジェクトがサーバーから要求された場合に、現在ログオンしているユーザーの既定の資格情報を使用して認証する必要がある場合は、このプロパティを true に設定します。クライアント アプリケーションの場合、これはほとんどのシナリオで望ましい動作です。

UseDefaultCredentials = true、定義した資格情報ではなく、現在ログインしているユーザー (つまり、Windows ユーザー) の資格情報を SMTP サーバーに送信します。試してみてくださいUseDefaultCredentials = false

于 2013-02-14T21:57:57.583 に答える