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

Serilog Email Sink多收件人配置失败求助(ASP.NET Core 6.1)

Serilog Email Sink 2.4 多收件人邮件发送失败问题

开发基于ASP.NET Core 6.1的后台工作服务,使用Serilog Email Sink 2.4时,配置向多个收件人发送邮件失败:既无错误提示,也收不到邮件,但单个收件人时功能正常。已尝试多种分隔符格式,均无效,寻求解决办法。

当前配置代码如下:

{
        "Name": "CustomEmail",
        "Args": {
          "ConnectionInfo": {
            "NetworkCredentials": {
              "UserName": "support@support.com",
              "Password": "1234"
            },
            "FromEmail": "support@support.com",
            "MailServer": "smtp.gmail.com",
            "EmailSubject": "[{Level}] Multiple Requests",
            "Port": "465",
            "IsBodyHtml": false,
            "EnableSsl": true,
            "ToEmail": "to1@gmail.com; to2@gmail.com",
            "RestrictedToMinimumLevel": "Error",
            "OutputTemplate": "{Timestamp:yyyy-MM-dd HH:mm} [{Level}] {Message}{NewLine}{Exception}"
          }
        }
      }

已尝试的ToEmail格式:

  • "ToEmail": "to1@gmail.com; to2@gmail.com"
  • "ToEmail": "to1@gmail.com;to2@gmail.com"
  • "ToEmail": "to1@gmail.com, to2@gmail.com"
  • "ToEmail": "to1@gmail.com,to2@gmail.com"

解决办法

Serilog Email Sink 2.4的ToEmail字段不支持直接用分隔符填写多个收件人,需通过代码配置实现多收件人功能:

  1. 代码直接配置Sink
    在Program.cs中手动初始化Logger时,传入多收件人数组:
Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(Configuration)
    .WriteTo.Email(
        connectionInfo: new EmailConnectionInfo
        {
            FromEmail = "support@support.com",
            MailServer = "smtp.gmail.com",
            Port = 465,
            EnableSsl = true,
            NetworkCredentials = new NetworkCredential("support@support.com", "1234"),
            EmailSubject = "[{Level}] Multiple Requests",
            IsBodyHtml = false,
            OutputTemplate = "{Timestamp:yyyy-MM-dd HH:mm} [{Level}] {Message}{NewLine}{Exception}"
        },
        toEmailAddresses: new[] { "to1@gmail.com", "to2@gmail.com" }
    )
    .CreateLogger();
  1. 结合JSON配置扩展
    若希望保留JSON中的基础配置,仅在代码中覆盖收件人参数:
var emailConfig = Configuration.GetSection("Serilog:WriteTo:0:Args:ConnectionInfo").Get<EmailConnectionInfo>();
Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(Configuration)
    .WriteTo.Email(
        connectionInfo: emailConfig,
        toEmailAddresses: new[] { "to1@gmail.com", "to2@gmail.com" }
    )
    .CreateLogger();
  1. SMTP服务验证
    确认Gmail SMTP服务未限制收件人数量,同时检查发件账号的安全设置:若启用了两步验证,需使用应用专用密码替代原账号密码;若未启用两步验证,需开启低安全性应用访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:05:21