2016-12-20 15 views
0

ユーザーの情報に基づいて電子メールを作成できるように、sendgridテンプレートを作成しました。それは本当にstraightsorwardだ今では、:SendGrid:テンプレートと置き換えタグ

<html> 
<body> 
    <div>&lt;%body%&gt;</div> 
    <div>Hi there&nbsp;:username!</div> 
    <div>Please, click on here to complete Accoung Activation: :activation</div> 
    <div>Please, bear with us.</div> 
</body> 
</html> 

私の知る限りでは、私は、トークン(:username:activation)を置き換えることができるよ把握してきました。

それにもかかわらず、私はJavaでそれを構築する方法をあまり理解していません。今まで、私はテンプレートを使用して電子メールを送信するためにこのコードを書くことができました:

String activationUri = "http://activation uri.sample.com/activation"; 
String address = "[email protected]"; 

Email from = new Email("[email protected]"); 
String subject = "Account activation mail request"; 
Email to = new Email(address); 
Content content = new Content("text/plain", activationUri); 
Mail mail = new Mail(from, subject, to, content); 
mail.setTemplateId("7928c2b2-c5a9-4918-a035-db5b7aae532b"); 

SendGrid sg = new SendGrid("api_key"); 
Request request = new Request(); 
try { 
    request.method = Method.POST; 
    request.endpoint = "mail/send"; 
    request.body = mail.build(); 

    Response response = sg.api(request); 
} catch (IOException ex) { 
    throw MailGenerationException.create(address, ex); 
} 

あなたは私がtemplateIdを設定して見ることができるように、それにもかかわらず、私が取得することはできませんよ方法:

  1. テンプレートのバージョンを設定します。
  2. トークンの置換を追加します。他方の手で

section tagssubstitution tags<%subject%><%body%>タグの違いだ

私は本当にドキュメントを見てきました。今まで私は、私がもたらしたすべてを理解することができなかった。

+0

以下に例を示します。[sendgrid-java](https://github.com/sendgrid/sendgrid-java/tree/master/examples) – Skaparate

答えて

0

私は同様のことをやろうとしていましたが、1つのリクエストでそれを行う方法を見つけることはできません。

使用するテンプレートは常に「アクティブ」なので、別のバージョンを選択するには、最初にテンプレート/バージョンのエンドポイントを呼び出してアクティブにする必要があります。

Request request = new Request(); 
try { 
    request.method = Method.PATCH; 
    request.endpoint = "templates/" + templateId + "/versions/" + versionId; 
    request.body = "{\"active\": \"1\"}"; 

    Response response = sg.api(request); 
    if (response.status == 200) 
    // success 
    else 
    // failure 
} catch (IOException ex) { 
    throw MailGenerationException.create(address, ex); 
} 

テンプレートのバージョンのリストを取得するには、あなたがtemplates endpointを呼び出す必要があります:あなたは、あなたが(実際に電子メールを送信する前に)このようなsomethinsするだろう、APIバージョン3を使用していると仮定すると、

...バージョンの使用はちょっと退屈なxDになります。置換のために

、あなたはパーソナライゼーションオブジェクトを構築する必要があります。それは、受信者(CC、BCCおよびTO)およびその他のデータを保持できるよう

Personalization obj = new Pesrsonalization(); 
obj.addSubstitution("tag", "value"); 
// Etc. 

パーソナライゼーションクラスは、非常に便利です。

<%ボディ%>タグはあなたがmail.bodyに送る何でも置き換えられます、そして<%対象%>は、パーソナライゼーションオブジェクトの被写体セット(またはmail.subjectによって置き換えられます)。他のタグとの唯一の違いは、パーソナライゼーションオブジェクトで設定する必要がないことです。

ところで、被写体には他のタグが含まれている可能性もあります。

希望すると、これが役立ちます。

関連する問題