我正在嘗試通過 .net 核心中的 SmtpClient 發送郵件?;旧衔抑皇菍⒁恍┡f的 .net 框架代碼遷移到 .net 核心。在舊系統中,它通過以下方式完成:using (var smtpClient = new SmtpClient("smtp.xyz.de", 587)){ smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new System.Net.NetworkCredential("user", "password", "domain"); smtpClient.EnableSsl = true; smtpClient.Send(mailMessage);}這段代碼工作正?!,F在我將此代碼遷移到 .net 核心,如下所示: using (var smtpClient = new SmtpClient("smtp.xyz.de", 587)) { smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential("user", "password", "domain"); smtpClient.EnableSsl = true; smtpClient.Send(mailMessage); }第一個問題是現在我收到一條錯誤消息:輸入不是有效的 Base-64 字符串,因為它包含非 base 64 字符、兩個以上的填充字符或填充字符中的非法字符。堆棧跟蹤: at System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) at System.Convert.FromBase64String(String s) at System.Net.Mail.SmtpNegotiateAuthenticationModule.GetSecurityLayerOutgoingBlob(String challenge, NTAuthentication clientContext) at System.Net.Mail.SmtpNegotiateAuthenticationModule.Authenticate(String challenge, NetworkCredential credential, Object sessionCookie, String spn, ChannelBinding channelBindingToken) at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port) at System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port) at System.Net.Mail.SmtpClient.GetConnection() at System.Net.Mail.SmtpClient.Send(MailMessage message)由于該錯誤,我嘗試將用戶和密碼字符串轉換為 Base64,如下所示:using (var smtpClient = new SmtpClient("smtp.xyz.de", 587)){ var userEncoded = Convert.ToBase64String(Encoding.UTF8.GetBytes("user")); var passwordEncoded = convert.ToBase64String(Encoding.UTF8.GetBytes("password")); smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential(userEncoded, passwordEncoded, "domain"); smtpClient.EnableSsl = true; smtpClient.Send(mailMessage); }這樣做我得到另一個錯誤:SMTP 服務器需要安全連接或客戶端未通過身份驗證。服務器響應為:5.7.1 客戶端未通過身份驗證
- 1 回答
- 0 關注
- 479 瀏覽
添加回答
舉報
0/150
提交
取消