中继访问被拒绝5.7.1

时间:2013-12-08 14:42:55

标签: c# asp.net asp.net-mvc sendmail credentials

我收到错误“Relay access denied”,但我可以将我的帐户与某些电子邮件程序相关联。

我的代码:

        SmtpClient smtpClient = new SmtpClient();
        NetworkCredential basicCredential =
            new NetworkCredential("xx@xx.com", "xxx");
        MailMessage message = new MailMessage();
        MailAddress fromAddress = new MailAddress("xx@xx.com");

        smtpClient.Host = "mail.xx.com";
        smtpClient.Port = 587;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials = basicCredential;

        message.From = fromAddress;
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        message.To.Add("aa@aa.com");

        try    
        {
            smtpClient.Send(message);
        }
        catch (Exception ex)
        {
            //Relay access denied...
        }

有谁知道这个的原因?

5 个答案:

答案 0 :(得分:4)

由于你的smtp主机端口是587,我认为你应该在调用它的Send方法之前将smtpClient.EnableSsl设置为true。

答案 1 :(得分:3)

虽然这个问题现在差不多已经有一年了,但我今天偶然发现了类似问题的解决方案。显然,System.Net.Mail.SmtpClientdoes not support the AUTH PLAIN method。不幸的是,我尝试使用的SMTP服务器仅提供AUTH PLAIN。由于SmtpClient类和我的服务器无法就身份验证方法达成一致,SmtpClient尝试发送未经身份验证的邮件,而这些邮件已被SMTP服务器拒绝...

您应该确保您使用的SMTP服务器至少提供SmtpClient支持的一种身份验证机制。我找不到支持机制的详尽列表,但我的服务器现在提供的AUTH LOGINSmtpClient一起使用。

答案 2 :(得分:1)

请尝试

        SmtpClient client = new SmtpClient("mail.xx@xx.com");

        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Credentials = new System.Net.NetworkCredential("xx@xx.com", "xxx");
        client.Port = 587;
        client.EnableSsl = true;

        MailMessage maili = new MailMessage();
        maili.Body = body;
        maili.Subject = subject;
        maili.IsBodyHtml = true;
        maili.From = new MailAddress("xx@xx.com");
        maili.To.Add("aa@aa.com");

        try
        {
            ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
            client.Send(maili);
        }
        catch (Exception ex)
        {
            throw ex;
        }

        maili.Dispose();

答案 3 :(得分:1)

在我的情况下,smtp密码已更改,并且给了我这个错误...

答案 4 :(得分:0)

通常很简单:“发件人”电子邮件地址的域名必须与发送电子邮件的帐户的域名相同。因此,如果您通过带有电子邮件地址的Hotmail帐户发送电子邮件,例如“ john.doe@hotmail.com”,“发件人”地址必须设置为相同。