You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 2.1中同SMTP邮件发送DLL在主项目失效问题求助

排查.NET Core 2.1项目中SMTP NuGet包发送邮件失败的思路

核心排查方向

  • 配置冲突检查
    • 检查主项目的appsettings.json或其他配置文件中是否存在Smtp相关配置节点,比如端口、SSL开关等,是否和DLL内部硬编码的配置冲突。
    • 确认主项目是否通过依赖注入替换了SMTP客户端实例,导致DLL的原生配置被覆盖。
  • 程序集版本与绑定问题
    • 查看主项目obj/project.assets.json中System.Net.Mail相关程序集的版本,对比DLL编译时依赖的版本是否一致。
    • 尝试在主项目的csproj中添加以下配置强制使用旧版SMTP客户端行为:
      <RuntimeHostConfigurationOption Include="System.Net.Mail.SmtpClient.UseOldSmtpClient" Value="true" />
      
  • 主项目内部拦截逻辑
    • 排查主项目是否存在全局邮件拦截机制(比如测试环境的邮件过滤规则),即使SMTP服务器返回成功,邮件也可能被内部拦截。
    • 检查主项目是否有AOP切面或中间件,是否修改了邮件发送流程或阻止了发送动作。
  • 运行上下文差异
    • 主项目若在IIS、Docker等环境运行,确认网络策略是否允许出站连接SMTP服务器的端口(通常是25/587)。
    • 对比控制台项目和主项目的运行身份权限,确认主项目运行账户是否有访问SMTP服务器的权限。
  • 打包与代码一致性验证
    • 把DLL中.SendMail()的核心代码直接复制到主项目中运行,验证是否能正常发送,排除NuGet打包时遗漏依赖或编译问题。
    • 增加DLL的日志粒度,记录完整的SMTP会话内容(包括邮件头、发送参数),对比控制台和主项目的日志差异。

内容的提问来源于stack exchange,提问作者Joss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:52:40