【问题标题】:Sendgrid substitution works only for the first recipientSendgrid 替换仅适用于第一个收件人
【发布时间】:2017-06-22 09:10:13
【问题描述】:

我正在使用 Sendgrid 发送带有包含多个变量的模板的电子邮件。 当我的电子邮件只有一个收件人时,一切正常。

当我在 To 或 To 中有多个收件人以及在 Cc 中有多个收件人时,第一封电子邮件是可以的,但以下邮件的替换标签中有空字符串。

下面是我的代码:

private bool SendEmail(MailAddress from, string[] to, string template, Dictionary<string, string> keyToReplace, string[] cc = null)
{
        var message = new SendGridMessage();
        message.From = from;
        message.AddTo(to);

        if (cc != null && cc.Any())
        {
            foreach (var ccAddress in cc)
            {
                message.AddCc(ccAddress);
            }
        }

        message.Subject = " ";
        message.Text = string.Empty;
        message.Html = "<p></p>";
        message.EnableTemplate("<%body%>");
        message.EnableTemplateEngine(templateIds[template]);

        foreach (var keyValue in keyToReplace)
        {
            var key = keyValue.Key;
            if (!key.StartsWith("#"))
            {
                key = string.Format("#{0}#", key);
            }
            var value = keyValue.Value;
            if (string.IsNullOrEmpty(keyValue.Value))
            {
                value = " ";
            }
            message.AddSubstitution(key, new List<string> { value });
       }
       var transportWeb = transportFactory(credentials);
       transportWeb.Deliver(message);
       logger.Info("Mail sent to : " + string.Join(", ", to));
       return true;
  }

【问题讨论】:

    标签: c# sendgrid sendgrid-templates


    【解决方案1】:

    我最终将 Sendgrid nuget 包从 5.0.0 版更新到了 9.5.0 版,它解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2011-09-29
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      相关资源
      最近更新 更多