2016-06-19 2 views
0

Я пытаюсь отправить почту с SendGrid нескольким получателям в # веб-приложений ASP.Net CSendgrid C# объем электронной почты X-SMTPAPI заголовок не работает

Согласно документации SendGrid мне нужно добавить заголовок X-SMTPAPI в мое сообщение в форматированной строке JSON. Я так, для первой проверки я добавил строку вручную набрано перед сборкой моего JSon списка адресов электронной почты progamatically вот мой код:

string header = "{\"to\": [\"emailaddress2\",\"emailaddress3\"], \"sub\": { \"%name%\": [\"Ben\",\"Joe\"]},\"filters\": { \"footer\": { \"settings\": { \"enable\": 1,\"text/plain\": \"Thank you for your business\"}}}}"; 

     string header2 = Regex.Replace(header, "(.{72})", "$1" + Environment.NewLine); 

     var myMessage3 = new SendGridMessage(); 

     myMessage3.From = new MailAddress("emailaddress1", "FromName"); 
     myMessage3.Headers.Add("X-SMTPAPI", header2); 
     myMessage3.AddTo("emailaddress4"); 
     myMessage3.Subject = "Test subject"; 
     myMessage3.Html = "Test message"; 
     myMessage3.EnableClickTracking(true); 

     // Create credentials, specifying your user name and password. 
     var credentials = new NetworkCredential(ConfigurationManager.AppSettings["xxxxx"], ConfigurationManager.AppSettings["xxxxx"]); 

     // Create an Web transport for sending email. 
     var transportWeb = new Web(credentials); 

     // Send the email, which returns an awaitable task. 
     transportWeb.DeliverAsync(myMessage3); 

Но это только кажется, игнорировать мой заголовок, и посылает электронную почту к одному email «emailaddress4» используется в «addto». Согласно документации, если заголовок JSON проанализирован неправильно, SendGrid отправляет электронное письмо об ошибке на адрес электронной почты, указанный в поле «FROM», но я не получаю никаких сообщений об ошибках.

У кого-нибудь есть идеи?

ответ

0

Я не знаю, почему вы не Получать ошибки на ваш FROM адрес, но ваш JSON содержит следующие недостатки:

  • , ближе к концу делает строку недопустимое JSON
  • пространства вокруг первый% в% name%, который может заставить sendgrid считать недопустимым тегом замещения
  • , если вы используете заголовок X-SMTPAPI для указания нескольких получателей, вы не должны добавлять стандартный SMTP TO с помощью AddTo().

Кроме того, вы не наносили заголовок на 72 символа (см. example в документации).

+0

Спасибо за ваш ответ, но в основном это не вокруг JSON, так как я подтвердил это, прежде чем задавать здесь вопрос. Это было просто неправильно. Я обновил код выше ... Насколько я видел в документах, стандартный SMTP TO является обязательным параметром и должен быть действительным. Я также добавил обертку строки, ничего не изменилось, просто ничего не происходит с моим заголовком X-SMTPAPI –

0

Я понял, что, однако, в документации X-SMTPAPI говорится о передаче заголовка как JSON, сам API ожидает его как параметра, содержащего строку Ienumerable. Таким образом, рабочий код:

var myMessage3 = new SendGridMessage();   


     myMessage3.From = new MailAddress("[email protected]", "Test Sender"); 

     myMessage3.AddTo("[email protected]"); 
     myMessage3.Subject = "Új klubkártya regisztrálva"; 
     myMessage3.Html = "Teszt üzenet"; 
     myMessage3.EnableClickTracking(true); 

     /* SMTP API 
      * ===================================================*/ 
     // Recipients 


     var addresses = new[]{ 

      "[email protected]", "[email protected]" 

      }; 

     //string check = string.Join(",", addresses); 


     myMessage3.Header.SetTo(addresses); 


     // Create credentials, specifying your user name and password. 
     var credentials = new NetworkCredential(ConfigurationManager.AppSettings["xxxxxxx"], ConfigurationManager.AppSettings["xxxxxxxxx"]); 

     // Create an Web transport for sending email. 
     var transportWeb = new Web(credentials); 

     // Send the email, which returns an awaitable task. 
     transportWeb.DeliverAsync(myMessage3);