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 容器无法发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7下Docker与.net Core 2.2

.NET Core容器化开发系列——Docker里面跑个.NET Core

docker 容器:更改网络内核设置,net.core.rmem_max

.NET Core容器化@Docker

.NetCore 发布到 Centos docker

无法从 NET Core 2.2 Web API 连接到 docker sql server