创建了sendgrid电子邮件模板,如何从Java调用它

时间:2015-07-09 05:53:15

标签: sendgrid

我在sendgrid中创建了电子邮件模板 - 具有可替换的值;

我获取了处理来自rabbitMQ队列的电子邮件的JSON有效负载(包含替换值)。我的问题是如何从Java调用sendgrid电子邮件模板?

5 个答案:

答案 0 :(得分:2)

我找到了解决方案,通过sendgrid调用sendgrid模板和电子邮件的方式如下:

SendGrid sendGrid = new SendGrid("username","password"));
SendGrid.Email email = new SendGrid.Email();

//Fill the required fields of email
email.setTo(new String[] { "xyz_to@gmail.com"});
email.setFrom("xyz_from@gmail.com");
email.setSubject(" ");
email.setText(" ");
email.setHtml(" ");

// Substitute template ID
email.addFilter(
    "templates",
    "template_id",
    "1231_1212_2323_3232");

//place holders in template, dynamically fill values in template
email.addSubstitution(
     ":firstName",
     new String[] { firstName });
email.addSubstitution(
     ":lastName",
     new String[] { lastName });

// send your email
Response response = sendGrid.send(email);

答案 1 :(得分:0)

这是上一个API规范的示例:

import com.sendgrid.*;
import java.io.IOException;

public class Example {
  public static void main(String[] args) throws IOException {
    Email from = new Email("test@example.com");
    String subject = "I'm replacing the subject tag";
    Email to = new Email("test@example.com");
    Content content = new Content("text/html", "I'm replacing the <strong>body tag</strong>");
    Mail mail = new Mail(from, subject, to, content);
    mail.personalization.get(0).addSubstitution("-name-", "Example User");
    mail.personalization.get(0).addSubstitution("-city-", "Denver");
    mail.setTemplateId("13b8f94f-bcae-4ec6-b752-70d6cb59f932");

    SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));
    Request request = new Request();
    try {
      request.setMethod(Method.POST);
      request.setEndpoint("mail/send");
      request.setBody(mail.build());
      Response response = sg.api(request);
      System.out.println(response.getStatusCode());
      System.out.println(response.getBody());
      System.out.println(response.getHeaders());
    } catch (IOException ex) {
      throw ex;
    }
  }
}

https://github.com/sendgrid/sendgrid-java/blob/master/USE_CASES.md

答案 2 :(得分:0)

这是我的工作场所。

import com.fasterxml.jackson.annotation.JsonProperty;
import com.sendgrid.*;
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class MailUtil {
    public static void main(String[] args) throws IOException {
        Email from = new Email();
        from.setEmail("fromEmail");
        from.setName("Samay");
        String subject = "Sending with SendGrid is Fun";
        Email to = new Email();
        to.setName("Sam");
        to.setEmail("ToEmail");
        DynamicTemplatePersonalization personalization = new DynamicTemplatePersonalization();
        personalization.addTo(to);
        Mail mail = new Mail();
        mail.setFrom(from);
        personalization.addDynamicTemplateData("name", "Sam");
        mail.addPersonalization(personalization);
        mail.setTemplateId("TEMPLATE-ID");
        SendGrid sg = new SendGrid("API-KEY");
        Request request = new Request();
        try {
            request.setMethod(Method.POST);
            request.setEndpoint("mail/send");
            request.setBody(mail.build());
            Response response = sg.api(request);
            System.out.println(response.getStatusCode());
            System.out.println(response.getBody());
            System.out.println(response.getHeaders());
        } catch (IOException ex) {
            throw ex;
        }
    }
    private static class DynamicTemplatePersonalization extends Personalization {

        @JsonProperty(value = "dynamic_template_data")
        private Map<String, String> dynamic_template_data;

        @JsonProperty("dynamic_template_data")
        public Map<String, String> getDynamicTemplateData() {
            if (dynamic_template_data == null) {
                return Collections.<String, String>emptyMap();
            }
            return dynamic_template_data;
        }

        public void addDynamicTemplateData(String key, String value) {
            if (dynamic_template_data == null) {
                dynamic_template_data = new HashMap<String, String>();
                dynamic_template_data.put(key, value);
            } else {
                dynamic_template_data.put(key, value);
            }
        }

    }
} 

答案 3 :(得分:0)

最近,Sendgrid升级了Maven版本v4.3.0,因此您不必为动态数据内容创建其他类。从此链接https://github.com/sendgrid/sendgrid-java/pull/449

中了解更多信息

答案 4 :(得分:0)

如果您正在执行 spring-boot Maven 项目,则需要在 sendgrid-java 中添加 pom.xml Maven 依赖项。同样,在项目的 application.properties 文件夹下的 resource 文件中,分别在 SENDGRID API KEYTEMPLATE ID 等属性下添加 spring.sendgrid.api-key=SG.xyztemplateId=d-cabc

已完成预设置。您可以创建一个简单的控制器类,如下所示:

快乐编码!

@RestController
@RequestMapping("/sendgrid")
public class MailResource {

    private final SendGrid sendGrid;

    @Value("${templateId}")
    private String EMAIL_TEMPLATE_ID;

    public MailResource(SendGrid sendGrid) {
        this.sendGrid = sendGrid;
    }

    @GetMapping("/test")
    public String sendEmailWithSendGrid(@RequestParam("msg") String message) {

        Email from = new Email("bijay.shrestha@f1soft.com");
        String subject = "Welcome Fonesal Unit to SendGrid";
        Email to = new Email("birat.bohora@f1soft.com");
        Content content = new Content("text/html", message);

        Mail mail = new Mail(from, subject, to, content);

        mail.setReplyTo(new Email("bijay.shrestha@f1soft.com"));
        mail.setTemplateId(EMAIL_TEMPLATE_ID);

        Request request = new Request();
        Response response = null;


        try {
            request.setMethod(Method.POST);
            request.setEndpoint("mail/send");
            request.setBody(mail.build());

            response = sendGrid.api(request);

            System.out.println(response.getStatusCode());
            System.out.println(response.getBody());
            System.out.println(response.getHeaders());
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }

        return "Email was successfully sent";
    }

}