Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 中继访问被拒绝5.7.1_C#_Asp.net_Asp.net Mvc_Sendmail_Credentials - Fatal编程技术网

C# 中继访问被拒绝5.7.1

C# 中继访问被拒绝5.7.1,c#,asp.net,asp.net-mvc,sendmail,credentials,C#,Asp.net,Asp.net Mvc,Sendmail,Credentials,我有错误“中继访问被拒绝”,但我可以连接我的帐户与一些电子邮件程序 我的代码: SmtpClient smtpClient = new SmtpClient(); NetworkCredential basicCredential = new NetworkCredential("xx@xx.com", "xxx"); MailMessage message = new MailMessage(); Mail

我有错误“中继访问被拒绝”,但我可以连接我的帐户与一些电子邮件程序

我的代码:

        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...
        }

有人知道原因吗?

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

请重试

        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();

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


您应该确保所使用的SMTP服务器至少提供了
SmtpClient
支持的一种身份验证机制。我找不到支持的机制的详尽列表,但我的服务器现在提供了与SmtpClient一起工作的
AUTH LOGIN
,在我的情况下,smtp密码已更改,并给了我这个错误…

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

除了重置堆栈跟踪之外,您的try-catch还有什么用?