2017-06-22 56 views
0

我正在使用Sendgrid發送包含多個變量的模板的電子郵件。 當我只有一個電子郵件收件人時,一切正常。Sendgrid替換僅適用於第一個收件人

當我有多個收件人在收件人或一個收件人和一個抄送,第一封電子郵件是好的,但以下在替代標籤中有空字符串。

下面是我的代碼:

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; 
    } 

回答

0

我enventually更新Sendgrid NuGet包從5.0.0版本9.5.0版本,它解決了這一問題。