2016-08-02 20 views
3

私はこのコードを使用してWebアプリケーションから電子メールを送信しています。 1人の受信者には問題ありません。私はhttps://sendgrid.com/docs/Integrate/Code_Examples/v3_Mail/csharp.htmlから来ているのと同じテクニックを使用して、複数の受信者に電子メールを送信するように調査しました。私は、コンマで区切られた文字列をdestinatario(コードのargsを参照)として試しました。つまり、 "[email protected][email protected][email protected]"ですが、SendGridは最初の受信者のみを受け取ります。私も配列を使用しようとしましたが、結果はsimmilarです。SGは最後の受信者だけを受け取ります。受信者のリストを渡す正しい方法は何ですか?sendgrid複数の受信者c#

public class email 
{ 
    public void enviar(string destinatario, string asunto, string contenido) 
    { 
     Execute(destinatario, asunto, contenido).Wait(); 
    } 

    static async Task Execute(string destinatario, string asunto, string contenido) 
    { 
     string apiKey = "SG..............."; 
     dynamic sg = new SendGridAPIClient(apiKey); 

     Email from = new Email("[email protected]"); 
     string subject = asunto; 
     Email to = new Email(destinatario); 
     Content content = new Content("text/plain", contenido);   

     Mail mail = new Mail(from, subject, to, content); 
     dynamic response = await sg.client.mail.send.post(requestBody: mail.Get()); 
    } 

}

+0

'Task.Wait()'は使用しないでください。デッドロックが発生します。どこでも 'async'を使う必要があります。 (また、 'async void'も使わないでください) – SLaks

+0

' dynamic'も使わないでください。 – SLaks

答えて

1

あなたの質問への答えは、ライブラリのsourceコードで見つけることができ、メールオブジェクトを作成するには、2つのコンストラクタがあります。使用しているコンストラクタは、指定したとおりに1人の受信者にメールを送信するのに適しています。パラメータのないコンストラクタを使用する必要があります。

var mail = new Mail(); 
mail.Subject = "subject"; 
mail.From = new Email("[email protected]", "fromName"); 
mail.AddContent(new Content("text/html", "<p>this is a mail<p>")); 
mail.AddPersonalization(personalization); 

実際の受信者はPersonalizationオブジェクトを介して追加される:

var personalization = new Personalization(); 
foreach (Email email in emailList) 
{ 
    personalization.AddTo(email); 
} 

このパーソナライゼーションオブジェクトはまた、CCやBCCとして受信者を追加するような、よりカスタマイズを可能にします。

関連する問題