Net Core 2.2 - Docker 容器无法发送邮件
Posted
技术标签:
【中文标题】Net Core 2.2 - Docker 容器无法发送邮件【英文标题】:Netcore 2.2 - Docker Container cannot sending mail 【发布时间】:2020-08-25 07:41:28 【问题描述】:我目前正在将一个应用程序部署到 docker 容器中,这个应用程序具有发送邮件的功能 (基于 c# netcore 2.2) 但我不能发送邮件(虽然意味着我可以从本地主机发送邮件) docker中的异常消息
System.ComponentModel.Win32Exception:GSSAPI 操作失败 错误 - 未指定的 GSS 故障。次要代码可以提供更多 信息(找不到领域“xxx.yyyy”的 KDC)。在 System.Net.Security.NegotiateStreamPal.AcquireCredentialsHandle(字符串 包,布尔 isServer,NetworkCredential 凭证)在 System.Net.NTAuthentication.Initialize(布尔 isServer,字符串 包、NetworkCredential 凭据、字符串 spn、ContextFlagsPal requestContextFlags, ChannelBinding channelBinding) 在 System.Net.Mail.SmtpNegotiateAuthenticationModule.Authenticate(字符串 挑战、NetworkCredential 凭证、对象 sessionCookie、字符串 spn,ChannelBinding channelBindingToken)在 System.Net.Mail.SmtpConnection.SetContextAndTryAuthenticate(ISmtpAuthenticationModule 模块、NetworkCredential 凭据、ContextAwareResult 上下文) 在 System.Net.Mail.SmtpConnection.GetConnection(字符串主机,Int32 端口)在 System.Net.Mail.SmtpTransport.GetConnection(字符串主机, Int32 端口)在 System.Net.Mail.SmtpClient.GetConnection() 在 System.Net.Mail.SmtpClient.Send(MailMessage 消息) --- 结束 内部异常堆栈跟踪 --- 在 System.Net.Mail.SmtpClient.Send(MailMessage 消息)
我尝试了一些谷歌的帮助,但不能,所以请帮助我 谢谢
【问题讨论】:
【参考方案1】:当您使用 GSSAPI 身份验证类型发送邮件时,Linux 上的 dotnet 似乎存在问题: https://github.com/dotnet/runtime/issues/2174、https://github.com/dotnet/runtime/issues/25885、https://github.com/dotnet/runtime/issues/27285
如果您需要使用 GSSAPI,请尝试在容器中安装“gss-ntlmssp”。
或者,如果您的服务器接受其他身份验证类型,请使用另一种身份验证类型,例如 NTLM:
var cred = new NetworkCredential(user, password, domain);
var cache = new CredentialCache();
cache.Add(host, 25, "NTLM", cred);
client.Credentials = cache;
【讨论】:
以上是关于Net Core 2.2 - Docker 容器无法发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core容器化开发系列——Docker里面跑个.NET Core