SendGrid:模板和替换标记

时间:2016-12-20 12:18:04

标签: java sendgrid

我已经创建了一个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 = "sample@sample.com";

Email from = new Email("no-reply@facetz.zone");
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. 添加令牌替换。
  3. 另一方面:

    1. section tagssubstitution tags以及<%subject%><%body%>代码之间的区别是什么?
    2. 拜托,我真的看了一下文档。到目前为止,我还没能理解我所提出的一切。

1 个答案:

答案 0 :(得分:0)

我当时希望做类似的事情,但我找不到办法让你做一件事。

将使用的模板始终是“活动”模板,因此,要选择不同的版本,您必须先调用模板/版本端点并“激活”它。

假设你正在使用API​​版本3,那么你会做这样的事情(在实际发送电子邮件之前):

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 ...然后使用版本会变得有点乏味xD。

对于替换,您必须构建Personalization对象:

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

Personalization类非常有用,因为它可以容纳收件人(CC,BCC和TO)和其他数据。

&lt;%body%&gt; 标记会被您在mail.body中发送的内容替换,并且&lt;%subject%&gt; 会被替换为在Personalization对象(或mail.subject)中设置的主题。与任何其他标记的唯一区别是不需要通过Personalization对象设置它们。

顺便说一句,主题可以包含其他标签也将被替换。

希望这会对你有所帮助。