2016-07-07 2 views
0

Я не могу заставить замену слов работать последовательно с sendgrid v3 api в C#. Иногда теги будут заменены, в других случаях они не будут. Я не понимаю, что это за причина. Может ли кто-нибудь увидеть какие-либо очевидные ошибки в моем коде?Sendgrid C# Шаблон Замена

  String apiKey = "KEY"; 
      dynamic sg = new SendGridAPIClient(apiKey); 

      Email from = new Email("[email protected]"); 
      String subject = "Hello World from the SendGrid CSharp Library"; 
      Email to = new Email("[email protected]"); 
      Content content = new Content("text/html", " "); 
      to.Name = "Joe"; 

      Mail mail = new Mail(from, subject, to, content); 
      mail.TemplateId = "dfea45f3-d608-4860-9f38-c7d444qwrqwc1f"; 

      Personalization subs = new Personalization(); 
      subs.AddTo(to); 
      subs.AddSubstitution("*|url|*", "http://asdasdasd.com"); 
      subs.AddSubstitution("*|username|*", "MrUsername"); 

      mail.AddPersonalization(subs); 

      dynamic response = sg.client.mail.send.post(requestBody: mail.Get()); 
+0

Привет, у вас есть возможность решить проблему? Спасибо за ваш ответ! Получил ту же проблему –

+0

Нет, я отправил по электронной почте sendgrid, но пока не ответил. – loveforfire33

ответ

0

Я нашел проблему с моей стороны. Я думаю, что твоя та же. Когда вы просматриваете почтовый объект перед отправкой, вы обнаружите, что в массиве есть две персонифицирующие элементы. Вы делаете это subs.AddTo(to); потом на mail.AddPersonalization(subs); Это создает 2 по электронной почте в массиве персонализации - мой пример неправильной полезной нагрузки был:

{ 
    "from": { 
     "email": "[email protected]" 
    }, 
    "subject": "", 
    "personalizations": 
    [ 
     { 
     "to": [{ 
      "email": "[email protected]" 
     }] 
     }, 
     { 
     "to": [{ 
      "email": "[email protected]" 
     }], 
     "substitutions": { 
      ":token": "http://alabala.com/auth/reset-password#token=or514rqHTeLjtjlN6WRppOu53yJJ64nSzcK86GF6Ite2BaZRa58YPMfTmM0wzQs4tMLbHy8YlpieDVBae1aD99TKnMh7wYNOE2nmu8gWePQoZiWhbFLomVBvApHA1fuxIxQ1elui2QXAmGPtwDdvVOgvAiSF3HQteuvFwP5kXUnXXEeddYLIUHqJCDrATiOsSgxvcpKmhXhrhx78ns49f4hakGlLMncNgBuMGmL3wCduY9f22hjCs9tbIPq5h5V" 
     } 
     } 
    ], 
    "content": [{ 
     "type": "text/html", 
     "value": "\u003chtml\u003e\u003cbody\u003eHTML content\u003c/body\u003e\u003c/html\u003e" 
    }], 
    "template_id": "unique id" 
} 

' Проверьте полезную нагрузку и исправить это попробовать mail.AddPersonalization[0] = subs; Надеется, что это решает проблему

+0

или не использовать Mail mail = new Mail (from, subject, to, content); и добавьте персонализацию, а затем –

1

Снимите персонализация и добавьте следующие

mail.Personalization[0].AddSubstitution("*|url|*", "http://asdasdasd.com"); 
mail.Personalization[0].AddSubstitution("*|username|*", "MrUsername"); 

или see code samples here

Смежные вопросы