.Net使用163smtp發送郵件時錯誤:郵箱不可用. has no permission解決方法


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郵箱,進入郵箱中心——客戶端授權密碼,選擇開啟即可,如下截圖

 

設置完畢后,在代碼中用使用客戶端授權密碼代替原始的郵箱密碼,這樣就可以正確的發送郵件了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM