2017-01-02 23 views
0

私はSendGridテンプレートで変数<%datetime%>を定義しました。私は、この命名規則により、すでに配置されている件名の<%subject%>に従うことにしました。例では変数名の命名規則が異なります。https://github.com/sendgrid/sendgrid-csharp/blob/master/SendGrid/Example/Example.cs#L41-name--city-を使用し、https://github.com/sendgrid/sendgrid-csharp/blob/master/SendGrid/Example/Example.cs#L157%name%%city%を使用しています。Sendgridテンプレート変数を代用するには? (C#で)

変数置換は単純なパターンマッチングに基づいていると仮定しているので、これらの例の対応するテンプレートには同じ正確な文字列が含まれています。それは何らかの理由で今のところ私にとってはうまくいきません。

string sendGridApiKey = ConfigurationManager.AppSettings["SendGridApiKey"].ToString(); 
var sendGrid = new SendGridAPIClient(sendGridApiKey); 

string emailFrom = ConfigurationManager.AppSettings["EmailFrom"].ToString(); 
Email from = new Email(emailFrom); 
string subject = "Supposed to be replaced. Can I get rid of this somehow then?"; 
string emaiTo = ConfigurationManager.AppSettings["EmailTo"].ToString(); 
Email to = new Email(emaiTo); 
Content content = new Content("text/html", "Supposed to be replaced by the template. Can I get rid of this somehow then?"); 
Mail mail = new Mail(from, subject, to, content); 
mail.TemplateId = "AC6A01BB-CFDF-45A7-BA53-8ECC54FD89DD"; 
mail.Personalization[0].AddSubstitution("<%subject%>", $"Your Report on {shortDateTimeStr}"); 
mail.Personalization[0].AddSubstitution("<%datetime%>", longDateTimeStr); 
// Some code adds several attachments here 

var response = await sendGrid.client.mail.send.post(requestBody: mail.Get()); 

要求が受け入れられ、処理されたが、私はまだ取得

は、件名行持って電子メールで送信される「置換されることになっています。私は何とかこれを取り除くことはできますか?」

本文は生テンプレートのコンテンツに置き換えられますが、変数は置換されません。私は間違って何をしていますか?

答えて

0

How to Add Custom variables to SendGrid email via API C# and Templateの質問と回答を読んだあと、<%foobar%>タイプ表記を使用するのは間違っていたことを認識しました。

基本的にはSendGrid独自の表記だし、<%subject%>は、彼らはあなたが"Supposed to be replaced. Can I get rid of this somehow then?"だった私の場合には、Mailsubjectに割り当てるものを置き換えるつもりことを意味します。今私はそこに適切な科目を集めます。

テンプレート本体では、変数の表記を{{foobar}}に変更しました。上にリンクされた質問の最後の答えは<%body%>をテンプレート本体に挿入する必要があると述べていますが、これは必須ではありません。それは私のためにそれなしで動作します。私は自分の{{foobar}}変数を<%subject%>の代わりに適切な置換で件名にも使用できると仮定します。

基本的に、テンプレートのデフォルト状態は、件名では<%subject%>、本文では<%body%>であるため、代入をしたくない場合は、電子メールをシームレスに配信することができます。

私が間違っている場合は私を訂正してください。

string subject = $"Report on ${shortDateTimeStr}"; 
string emaiTo = ConfigurationManager.AppSettings["EmailTo"].ToString(); 
Email to = new Email(emaiTo); 
Content content = new Content("text/html", "Placeholder"); 
Mail mail = new Mail(from, subject, to, content); 
mail.TemplateId = "AC6A01BB-CFDF-45A7-BA53-8ECC54FD89DD"; 
mail.Personalization[0].AddSubstitution("{{datetime}}", longDateTimeStr); 

TL

; DR:あなた自身の変数の <%foobar%>表記法を使用していますが、他のスタイルのダースからいずれかを選択しないでください。私が読んだ例や文書のどれもこれを言及していません。

関連する問題