国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.Net FrameWork 框架下使用System.Net.Mail封裝類 發(fā)送郵件失敗:服務(wù)器響應(yīng):5.7.1 Client was not authenticated 解決方案

這篇具有很好參考價(jià)值的文章主要介紹了.Net FrameWork 框架下使用System.Net.Mail封裝類 發(fā)送郵件失敗:服務(wù)器響應(yīng):5.7.1 Client was not authenticated 解決方案。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

偶然興起,想做一個(gè)后臺(tái)監(jiān)控PLC狀態(tài)的服務(wù)。功能如下:監(jiān)控到PLC狀態(tài)值異常后觸發(fā)郵件推送,狀態(tài)改變后只推送一次。開(kāi)始使用的是.net6.0開(kāi)發(fā)框架開(kāi)發(fā),一切都很順利,郵件也能正常推送。但由于現(xiàn)場(chǎng)工控機(jī)系統(tǒng)不是WIN10 20H2的最新版本,導(dǎo)致系統(tǒng)未安裝.Net6.0 Runtime。而我也沒(méi)有再去安裝的打算。我重新使用了.net FrameWork4.7 框架進(jìn)行開(kāi)發(fā)。開(kāi)發(fā)完成后,我以為能正常運(yùn)行。但出現(xiàn)了不可預(yù)知的錯(cuò)誤——服務(wù)器響應(yīng):5.7.1 Client was not authenticated。下面分別是2個(gè)框架下發(fā)送郵件的代碼:
.Net 6.0框架:

點(diǎn)擊查看代碼
public bool Send()
{
    try
    {
        SmtpClient smtp = new SmtpClient(this.Host!, (int)this.Port!) { Credentials = new NetworkCredential(this.User!, this.Password!), EnableSsl = true, UseDefaultCredentials = false };
        MailMessage message = new MailMessage(this.SenderAddress!, this.ReciverAddress!, this.Subject, this.Body) { From = new MailAddress(this.SenderAddress!, this.SenderName) };
        ServicePointManager.ServerCertificateValidationCallback = delegate (object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        };
        smtp.Send(message);
        return true;
    }
    catch (Exception)
    {
        return false;
    }
}

.Net FrameWork 4.7 框架:

點(diǎn)擊查看代碼
public bool Send()
{
    try
    {
        SmtpClient smtp = new SmtpClient(this.Host!, (int)this.Port!) { Credentials = new NetworkCredential(this.User!, this.Password!), EnableSsl = true, UseDefaultCredentials = false };
        MailMessage message = new MailMessage(this.SenderAddress!, this.ReciverAddress!, this.Subject, this.Body) { From = new MailAddress(this.SenderAddress!, this.SenderName) };
        ServicePointManager.ServerCertificateValidationCallback = delegate (object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        };
        smtp.Send(message);
        return true;
    }
    catch (Exception)
    {
        return false;
    }
}
在不同的開(kāi)發(fā)框架下,使用的代碼完全一致。但是在.Net FrameWork 4.7 框架下發(fā)送郵件才會(huì)出現(xiàn)異常:**5.7.1 Client was not authenticated**,而.Net 6.0 環(huán)境下不會(huì)。

我不得不懷疑是不是微軟的封裝類System.Net.Mail存在問(wèn)題。經(jīng)過(guò)斷點(diǎn)調(diào)試,終于發(fā)現(xiàn)了2個(gè)環(huán)境發(fā)送郵件時(shí)存在的差異。
.Net 6.0框架下用戶傳入的憑證(賬號(hào)密碼)SMTP服務(wù)器可正常獲取到

.Net FrameWork 框架下使用System.Net.Mail封裝類 發(fā)送郵件失敗:服務(wù)器響應(yīng):5.7.1 Client was not authenticated 解決方案
.Net FrameWork 框架下竟然獲取的憑證為空

.Net FrameWork 框架下使用System.Net.Mail封裝類 發(fā)送郵件失敗:服務(wù)器響應(yīng):5.7.1 Client was not authenticated 解決方案

經(jīng)過(guò)短暫思考,我決定修改下.Net FrameWork框架下的開(kāi)發(fā)代碼。如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-776950.html

點(diǎn)擊查看代碼
public bool Send()
{
    try
    {
        smtp = new SmtpClient(this.Host, (int)this.Port);
        smtp.Credentials = new NetworkCredential(this.User,this.Password);
        smtp.EnableSsl = true;
        //smtp.UseDefaultCredentials = false;
        MailMessage message = new MailMessage(this.SenderAddress, this.ReciverAddress, this.Subject, this.Body) { From = new MailAddress(this.SenderAddress, this.SenderName) };
        ServicePointManager.ServerCertificateValidationCallback = delegate (object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        };
        smtp.Send(message);
        return true;
    }
    catch (Exception)
    {
        return false;
    }
}
上述代碼中,取消了UseDefaultCredentials屬性的使用。運(yùn)行后,郵件發(fā)送正常。 那么問(wèn)題來(lái)了,為什么使用了UseDefaultCredentials屬性就會(huì)導(dǎo)致Credentials 憑證為空呢?看下.Net FrameWork框架System.Net.Mail源碼:
點(diǎn)擊查看代碼
public bool UseDefaultCredentials
{
    get
    {
        if (!(transport.Credentials is SystemNetworkCredential))
        {
            return false;
        }

        return true;
    }
    set
    {
        if (InCall)
        {
            throw new InvalidOperationException(SR.GetString("SmtpInvalidOperationDuringSend"));
        }

        transport.Credentials = (value ? CredentialCache.DefaultNetworkCredentials : null);
    }
}
再對(duì)比下.net6.0 框架System.Net.Mail源碼:
點(diǎn)擊查看代碼
 //
 // 摘要:
 //     Gets or sets a System.Boolean value that controls whether the System.Net.CredentialCache.DefaultCredentials
 //     are sent with requests.
 //
 // 返回結(jié)果:
 //     true if the default credentials are used; otherwise false. The default value
 //     is false.
 //
 // 異常:
 //   T:System.InvalidOperationException:
 //     You cannot change the value of this property when an email is being sent.
 public bool UseDefaultCredentials
 {
     get;
     set;
 }
水落石出,微軟誤我啊!??

到了這里,關(guān)于.Net FrameWork 框架下使用System.Net.Mail封裝類 發(fā)送郵件失敗:服務(wù)器響應(yīng):5.7.1 Client was not authenticated 解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • springboot 發(fā)送郵件,以及郵件工具類 并且解決spring-boot-starter-mail 發(fā)送郵件附件亂碼或者文件錯(cuò)亂

    1、設(shè)置系統(tǒng)值 System.setProperty(“mail.mime.splitlongparameters”, “false”); 2、 在創(chuàng)建對(duì)象的時(shí)候定義編碼格式(utf-8): MimeMessageHelper helper = new MimeMessageHelper(mes, true, “utf-8”); 3、 其次,在添加附件的時(shí)候,附件名是需要定義編碼的 helper.addAttachment(MimeUtility.encodeWord(附件名,“utf-8”

    2024年02月15日
    瀏覽(34)
  • laravel中Mail發(fā)送郵件失敗,但是沒(méi)有錯(cuò)誤信息,該如何調(diào)試?

    在Laravel中,當(dāng)使用Mail類發(fā)送郵件失敗但沒(méi)有錯(cuò)誤信息顯示時(shí),可以按照以下步驟進(jìn)行調(diào)試: 檢查日志文件: Laravel會(huì)記錄各種應(yīng)用程序活動(dòng)和錯(cuò)誤信息。查看應(yīng)用程序的日志文件,通常位于 storage/logs 目錄下,尋找與郵件相關(guān)的錯(cuò)誤消息。 開(kāi)啟調(diào)試模式: 在 .env 文件中將

    2024年02月11日
    瀏覽(26)
  • 關(guān)于MSMQ(System.Messaging.MessageQueue)安裝及在.NET Framework框架下的簡(jiǎn)單應(yīng)用實(shí)現(xiàn),以解決大并發(fā)請(qǐng)求問(wèn)題

    關(guān)于MSMQ(System.Messaging.MessageQueue)安裝及在.NET Framework框架下的簡(jiǎn)單應(yīng)用實(shí)現(xiàn),以解決大并發(fā)請(qǐng)求問(wèn)題

    提示:大并發(fā)請(qǐng)求隊(duì)列處理及實(shí)時(shí)聊天消息也可參考本文自行實(shí)現(xiàn) 隨著大數(shù)據(jù)的不斷發(fā)展,我們實(shí)際開(kāi)發(fā)的項(xiàng)目也開(kāi)始逐漸接觸到大數(shù)據(jù)大并發(fā)造成的一些問(wèn)題,由于近期項(xiàng)目需求要滿足2000并發(fā)量,經(jīng)過(guò)壓測(cè)發(fā)現(xiàn)原項(xiàng)目中編寫的正常邏輯讀寫程序很卡頓,服務(wù)器環(huán)境Windows

    2024年02月06日
    瀏覽(109)
  • asp.net使用MailMessage發(fā)送郵件的方法

    asp.net使用MailMessage發(fā)送郵件的方法

    ?控件名稱及ID如下: 書寫后臺(tái)代碼之前需要先了解MailMessage類中的各個(gè)屬性: ????????From:發(fā)件人郵箱地址。 To:收件人的郵箱地址。 ? ? CC:抄送人郵箱地址。 Subject:郵件標(biāo)題。 Body:郵件內(nèi)容。 ? ? ? ?Attachments:郵件附件 ????????此外MailMessage還需要用到Smtp

    2024年02月06日
    瀏覽(15)
  • 【C#】.Net Framework框架使用JWT

    【C#】.Net Framework框架使用JWT

    2023年,第31周,第2篇文章。給自己一個(gè)目標(biāo),然后堅(jiān)持總會(huì)有收貨,不信你試試! 本篇文章主要簡(jiǎn)單講講,.Net Framework框架下使用JWT的代碼例子,以及他們的基本概念。 2002年微軟發(fā)布了.net framework 1.0,那個(gè)時(shí)候博主剛開(kāi)始玩?zhèn)髌嬗螒?,接觸電腦的時(shí)間還是挺早的。 JWT(JS

    2024年02月15日
    瀏覽(27)
  • 【C#】.Net Framework框架下使用SQLike以及基本概念

    【C#】.Net Framework框架下使用SQLike以及基本概念

    2023年,第32周,第2篇文章。給自己一個(gè)目標(biāo),然后堅(jiān)持總會(huì)有收貨,不信你試試! 在C#的.NET Framework框架下,有很多輕量級(jí)數(shù)據(jù)庫(kù)選擇,比如:SQLike就是其中一款,一起來(lái)了解SQLike的簡(jiǎn)單使用吧。 輕量級(jí)數(shù)據(jù)庫(kù)是指具有較小的存儲(chǔ)需求、資源消耗較低、易于部署和使用的數(shù)據(jù)

    2024年02月11日
    瀏覽(20)
  • 使用群暉NAS Mail Server搭建個(gè)性化郵件系統(tǒng)

    使用群暉NAS Mail Server搭建個(gè)性化郵件系統(tǒng)

    一個(gè)頂級(jí)域名 可以獲取公網(wǎng)IP的寬帶 路由使用DDNS功能,或使用群暉自帶DDNS,解析頂級(jí)域名 可以做“端口映射”的路由器 step1:安裝套件 登錄群暉NAS,打開(kāi)[套件中心],搜索“mail”,安裝如下兩個(gè)套件:“MailPlus server”、“MailPlus”; step2:安裝MailPlus server服務(wù)端 打開(kāi)“M

    2024年02月16日
    瀏覽(25)
  • .NET 個(gè)人博客-發(fā)送郵件優(yōu)化?

    之前的發(fā)送郵件就弄了個(gè)方法,比如回復(fù)評(píng)論會(huì)給評(píng)論的人發(fā)送郵件,留言回復(fù)也是,而且2者的代碼有很多一樣的地方,比較冗余。然后也是抽空優(yōu)化一下,思路也是比較常用的工廠+策略模式,然后評(píng)論回復(fù)和留言回復(fù)的模板是不一樣的,所以需要?jiǎng)?chuàng)建模板類和方法。。。

    2024年02月13日
    瀏覽(25)
  • 如何使用Java Mail發(fā)郵件(包括單發(fā)和群發(fā)),含演示代碼下載

    如何使用Java Mail發(fā)郵件(包括單發(fā)和群發(fā)),含演示代碼下載

    在我們做業(yè)務(wù)系統(tǒng)開(kāi)發(fā)時(shí)時(shí),經(jīng)常會(huì)用到 郵件發(fā)送的場(chǎng)景,如 通過(guò)郵件通知給注冊(cè)用戶有關(guān)注冊(cè)碼的內(nèi)容,或者 管理的某些設(shè)備有告警了,需要郵件通知相關(guān)維護(hù)人員及時(shí)處理相關(guān)設(shè)備,還有 使用的會(huì)員服務(wù)已經(jīng)到期了,用郵件通知給用戶等等。 在java 世界里如何發(fā)郵件,

    2024年02月16日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包