当前位置:首页 > Web开发 > 正文

.Net使用163smtp发送邮件时错误:邮箱不可用. has no permission解决方法

11-11 Web开发

C#实现简单邮件发送代码如下

public static void SendAsync(string emailTo, string subject, string mailBody) { var msg = new MailMessage(); msg.To.Add(emailTo); // msg.From = new MailAddress(_userNameForEmail, "显示的发件人名称", System.Text.Encoding.UTF8); msg.Subject = subject;//邮件标题 msg.SubjectEncoding = System.Text.Encoding.UTF8; msg.Body = mailBody;//邮件内容 msg.BodyEncoding = System.Text.Encoding.UTF8; msg.IsBodyHtml = false; msg.Priority = MailPriority.High;//邮件优先级 // var client = new SmtpClient(); client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(_userNameForEmail, _passwordForEmail); // client.Host = _smtpHost; try { //简单一点儿可以client.Send(msg); client.Send(msg); //Task.Factory.StartNew(() => //{ // client.Send(msg); //}); //client.SendAsync(msg, userState); } catch (SmtpException ex) {
         log.Error(ex);
throw ex; } }

当传入发送邮箱正确的用户名和密码时,总是收到到:邮箱不可用. has no permission 这样的错误,英文错误为:Mailbox unavailable. The server response was: User has no permission。

其实我们用.Net发送邮件时相当于自定义客户端根据用户名和密码进行登录,然后使用SMTP服务发送邮件。但新注册的163邮件默认是不开启客户端授权验证的(对自定的邮箱大师客户端默认开启),

因此登录总是会被拒绝,验证没有权限。解决办法是进入163邮箱,进入邮箱中心——客户端授权密码,选择开启即可,如下截图

技术分享

设置完毕后,在代码中用使用客户端授权密码代替原始的邮箱密码,这样就可以正确的发送邮件了。

.Net使用163smtp发送邮件时错误:邮箱不可用. has no permission解决方法

温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/web/10192.html