Sendgrid api替换不适用于多封电子邮件

时间:2017-10-05 05:12:22

标签: asp.net sendgrid

如何通过c#中的sendgrid电子邮件中的替换方式向多个配方发送电子邮件? Sendgrid api替换不适用于多个receipents。 我正在使用Sendgrid发送包含多个变量的模板的电子邮件。当我只有一个电子邮件收件人时,一切都很顺利。

如果我在To中有多个收件人,或者在To中有一个收件人,而在Cc中有一个收件人,则第一封电子邮件是正常的,但以下在替代标签中有空字符串。

以下是我的代码:

var message = new SendGridMessage();
message.Subject = fullName + " has shared SmartForm with you for  " + PLConstants.APP_NAME;
message.EnableTemplateEngine(PLConstants.SEND_SMARTFORM_EMAIL_TOUSER);

if (!string.IsNullOrEmpty(emailIds))
{
    string[] bccAddressField = emailIds.Split(',');                    

    for (int icount = 0; icount < bccAddressField.Length; icount++)
    {
        if (bccAddressField[icount].ToString() != "")
        {
            if (message.To.Length == 0)
            {
                message.AddTo(bccAddressField[icount].ToString());
            }
            else
            {
                //message.AddTo(bccAddressField[icount].ToString());
                message.AddBcc(new EmailAddress(bccAddressField[icount].ToString()).ToString());
            }
        }
    }
}

string profileUrl = string.Format("{0}{1}", PLConstants.SMARTLINK_URL,(HttpContext.Current.Session[PLConstants.SESSION_USERNAME].ToString()));
message.AddSubstitution("{SenderName}",new List<string> { (HttpContext.Current.Session[PLConstants.SESSION_FIRST_NAME].ToString()) });
message.AddSubstitution("{SmartListingName}", new List<string> { objSmartListingModel.Title });
message.AddSubstitution("{SmartListingLink}", new List<string> { smartListingLink });
message.AddSubstitution("{SmartListingRedirectionLink}", new List<string> { smartListingRedirectionLink });

message.Html = " ";
Mailer.SendEmail(message);

2 个答案:

答案 0 :(得分:0)

如果收件人列表中的“收件人”字符串如下,请尝试按如下方式添加收件人。您也可以将它用于CC / Bcc。

        string To = "a@a.com; b@b.com";

        //create the mail message
        MailMessage mail = new MailMessage();
        //set the addresses
        string[] arrTo = To.Split(';');
        for (int i = 0; i < arrTo.Length; i++)
        {
            if (!string.IsNullOrEmpty(arrTo[i].Trim()))
            mail.To.Add(arrTo[i].Trim());
        }

            SmtpClient smtp = null;
            smtp = new SmtpClient("smtp.sendgrid.net", Convert.ToInt32(587));
            System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password");  
            smtp.Credentials = credentials;
            smtp.Send(mail);

答案 1 :(得分:0)

感谢您的回复。实际上我从@grishma找到了答案。 对于多个收据人,我已经通过了具有相应收件人数的通道替换值。

例如。如果我有4个收据,那么我必须添加替换,如: message.AddSubstitution(&#34; {SmartListingLink}&#34;,新列表{&#34; Link1&#34;,&#34; Link2&#34;,&#34; Link3&#34;});