C# SMTP客户端中的远程主机强制关闭了现有连接

C# SMTP客户端中的远程主机强制关闭了现有连接,c#,.net,exception-handling,smtp,C#,.net,Exception Handling,Smtp,我将放弃调试SMTP服务器以发送电子邮件。。。我的代码如下 SmtpClient mailClient = new SmtpClient("plus.smtp.mail.yahoo.com", 465); mailClient.EnableSsl = true; MailMessage message = new MailMessage(); message.To.Add("aditya15417@hotmail.com"); message.Subject =

我将放弃调试SMTP服务器以发送电子邮件。。。我的代码如下

 SmtpClient mailClient = new SmtpClient("plus.smtp.mail.yahoo.com", 465);
    mailClient.EnableSsl = true;
    MailMessage message = new MailMessage();
    message.To.Add("aditya15417@hotmail.com");
    message.Subject = "permias-tucson-contact-us";
    mailClient.Credentials = new NetworkCredential("myemail@yahoo.com", "mypassword");
    MailAddress fromAddress = new MailAddress(Email.Text, Name.Text);
    message.From = fromAddress;

    mailClient.Send(message);

您需要传递登录凭据:

mailClient.Credentials = new NetworkCredential(Email.Text, password)

下面是一个完整的工作示例:

public class Program
{
    static void Main(string[] args)
    {
        using (var client = new SmtpClient("smtp.mail.yahoo.com", 587))
        {
            client.Credentials = new NetworkCredential("youraccount@yahoo.com", "secret");
            var mail = new MailMessage();
            mail.From = new MailAddress("youraccount@yahoo.com");
            mail.To.Add("destaccount@gmail.com");
            mail.Subject = "Test mail";
            mail.Body = "test body";
            client.Send(mail);
        }
    }
}

确保替换帐户和密码。

如果不使用用户名和密码登录SMTP服务器,则无法发送电子邮件。您可能应该创建一个单独的电子邮件帐户来发送。我这样做了…更新了上面的代码,但仍然会出现相同的错误。我遇到了相同的问题,但会间歇性出现。例如,当循环3000个收件人并发送3000封电子邮件时,它会在发出的100封电子邮件上随机抛出此错误,但其余的都会正常。它也可能发生在单独发送一封电子邮件时。电子邮件对我来说是非常不可靠的,我也不知道我还能做些什么。你那边运气好吗?所以我应该知道发件人的密码是什么?是的,你需要用户名和密码。就雅虎而言,我认为用户名应该是电子邮件地址。如果SMTP不需要身份验证,那么任何人都可以使用它发送垃圾邮件。不,我不认为凭据是问题所在。无论是否有凭据,此问题都可能间歇性发生。@Aaron:这是服务器问题。