import com.sendgrid.Method; import com.sendgrid.Request; import com.sendgrid.Response; import com.sendgrid.SendGrid; import com.sendgrid.helpers.mail.Mail; import com.sendgrid.helpers.mail.objects.*; import java.io.IOException; public class Example { // Fully populated Mail object public static Mail buildKitchenSink() { Mail mail = new Mail(); Email fromEmail = new Email(); fromEmail.setName("Example User"); fromEmail.setEmail("test@example.com"); mail.setFrom(fromEmail); mail.setSubject("Hello World from the Twilio SendGrid Java Library"); Personalization personalization = new Personalization(); Email to = new Email(); to.setName("Example User"); to.setEmail("test1@example.com"); personalization.addTo(to); to.setName("Example User"); to.setEmail("test2@example.com"); personalization.addTo(to); Email cc = new Email(); cc.setName("Example User"); cc.setEmail("test3@example.com"); personalization.addCc(cc); cc.setName("Example User"); cc.setEmail("test4@example.com"); personalization.addCc(cc); Email bcc = new Email(); bcc.setName("Example User"); bcc.setEmail("test5@example.com"); personalization.addBcc(bcc); bcc.setName("Example User"); bcc.setEmail("test6@example.com"); personalization.addBcc(bcc); personalization.setSubject("Hello World from the Personalized Twilio SendGrid Java Library"); personalization.addHeader("X-Test", "test"); personalization.addHeader("X-Mock", "true"); personalization.addSubstitution("%name%", "Example User"); personalization.addSubstitution("%city%", "Riverside"); personalization.addCustomArg("user_id", "343"); personalization.addCustomArg("type", "marketing"); personalization.setSendAt(1443636843); mail.addPersonalization(personalization); Personalization personalization2 = new Personalization(); Email to2 = new Email(); to2.setName("Example User"); to2.setEmail("test1@example.com"); personalization2.addTo(to2); Email fromEmail2 = new Email(); fromEmail2.setName("Example User"); fromEmail2.setEmail("test2@example.com"); personalization2.setFrom(fromEmail2); to2.setName("Example User"); to2.setEmail("test3@example.com"); personalization2.addTo(to2); Email cc2 = new Email(); cc2.setName("Example User"); cc2.setEmail("test4@example.com"); personalization2.addCc(cc2); cc2.setName("Example User"); cc2.setEmail("test5@example.com"); personalization2.addCc(cc2); Email bcc2 = new Email(); bcc2.setName("Example User"); bcc2.setEmail("test6@example.com"); personalization2.addBcc(bcc2); bcc2.setName("Example User"); bcc2.setEmail("test7@example.com"); personalization2.addBcc(bcc2); personalization2.setSubject("Hello World from the Personalized Twilio SendGrid Java Library"); personalization2.addHeader("X-Test", "test"); personalization2.addHeader("X-Mock", "true"); personalization2.addSubstitution("%name%", "Example User"); personalization2.addSubstitution("%city%", "Denver"); personalization2.addCustomArg("user_id", "343"); personalization2.addCustomArg("type", "marketing"); personalization2.setSendAt(1443636843); mail.addPersonalization(personalization2); Content content = new Content(); content.setType("text/plain"); content.setValue("some text here"); mail.addContent(content); content.setType("text/html"); content.setValue("some text here"); mail.addContent(content); Attachments attachments = new Attachments(); attachments.setContent("TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBwdW12"); attachments.setType("application/pdf"); attachments.setFilename("balance_001.pdf"); attachments.setDisposition("attachment"); attachments.setContentId("Balance Sheet"); mail.addAttachments(attachments); Attachments attachments2 = new Attachments(); attachments2.setContent("BwdW"); attachments2.setType("image/png"); attachments2.setFilename("banner.png"); attachments2.setDisposition("inline"); attachments2.setContentId("Banner"); mail.addAttachments(attachments2); mail.setTemplateId("13b8f94f-bcae-4ec6-b752-70d6cb59f932"); mail.addSection("%section1%", "Substitution Text for Section 1"); mail.addSection("%section2%", "Substitution Text for Section 2"); mail.addHeader("X-Test1", "1"); mail.addHeader("X-Test2", "2"); mail.addCategory("May"); mail.addCategory("2016"); mail.addCustomArg("campaign", "welcome"); mail.addCustomArg("weekday", "morning"); mail.setSendAt(1443636842); ASM asm = new ASM(); asm.setGroupId(99); asm.setGroupsToDisplay(new int[]{4, 5, 6, 7, 8}); mail.setASM(asm); // This must be a valid [batch ID](https://sendgrid.com/docs/API_Reference/SMTP_API/scheduling_parameters.html) to work // mail.setBatchId("sendgrid_batch_id"); mail.setIpPoolId("23"); MailSettings mailSettings = new MailSettings(); BccSettings bccSettings = new BccSettings(); bccSettings.setEnable(true); bccSettings.setEmail("test@example.com"); mailSettings.setBccSettings(bccSettings); Setting sandBoxMode = new Setting(); sandBoxMode.setEnable(true); mailSettings.setSandboxMode(sandBoxMode); Setting bypassListManagement = new Setting(); bypassListManagement.setEnable(true); mailSettings.setBypassListManagement(bypassListManagement); // Note: Bypass Spam, Bounce, and Unsubscribe management cannot // be combined with Bypass List Management Setting bypassSpamManagement = new Setting(); bypassSpamManagement.setEnable(true); mailSettings.setBypassSpamManagement(bypassSpamManagement); Setting bypassBounceManagement = new Setting(); bypassBounceManagement.setEnable(true); mailSettings.setBypassBounceManagement(bypassBounceManagement); Setting bypassUnsubscribeManagement = new Setting(); bypassUnsubscribeManagement.setEnable(true); mailSettings.setBypassUnsubscribeManagement(bypassUnsubscribeManagement); FooterSetting footerSetting = new FooterSetting(); footerSetting.setEnable(true); footerSetting.setText("Footer Text"); footerSetting.setHtml("Footer Text"); mailSettings.setFooterSetting(footerSetting); SpamCheckSetting spamCheckSetting = new SpamCheckSetting(); spamCheckSetting.setEnable(true); spamCheckSetting.setSpamThreshold(1); spamCheckSetting.setPostToUrl("https://spamcatcher.sendgrid.com"); mailSettings.setSpamCheckSetting(spamCheckSetting); mail.setMailSettings(mailSettings); TrackingSettings trackingSettings = new TrackingSettings(); ClickTrackingSetting clickTrackingSetting = new ClickTrackingSetting(); clickTrackingSetting.setEnable(true); clickTrackingSetting.setEnableText(true); trackingSettings.setClickTrackingSetting(clickTrackingSetting); OpenTrackingSetting openTrackingSetting = new OpenTrackingSetting(); openTrackingSetting.setEnable(true); openTrackingSetting.setSubstitutionTag("Optional tag to replace with the open image in the body of the message"); trackingSettings.setOpenTrackingSetting(openTrackingSetting); SubscriptionTrackingSetting subscriptionTrackingSetting = new SubscriptionTrackingSetting(); subscriptionTrackingSetting.setEnable(true); subscriptionTrackingSetting.setText("text to insert into the text/plain portion of the message"); subscriptionTrackingSetting.setHtml("html to insert into the text/html portion of the message"); subscriptionTrackingSetting.setSubstitutionTag("Optional tag to replace with the open image in the body of the message"); trackingSettings.setSubscriptionTrackingSetting(subscriptionTrackingSetting); GoogleAnalyticsSetting googleAnalyticsSetting = new GoogleAnalyticsSetting(); googleAnalyticsSetting.setEnable(true); googleAnalyticsSetting.setCampaignSource("some source"); googleAnalyticsSetting.setCampaignTerm("some term"); googleAnalyticsSetting.setCampaignContent("some content"); googleAnalyticsSetting.setCampaignName("some name"); googleAnalyticsSetting.setCampaignMedium("some medium"); trackingSettings.setGoogleAnalyticsSetting(googleAnalyticsSetting); mail.setTrackingSettings(trackingSettings); Email replyTo = new Email(); replyTo.setName("Example User"); replyTo.setEmail("test@example.com"); mail.setReplyTo(replyTo); return mail; } // API V3 Dynamic Template implementation public static Mail buildDynamicTemplate() { Mail mail = new Mail(); Email fromEmail = new Email(); fromEmail.setName("Example User"); fromEmail.setEmail("test@example.com"); mail.setFrom(fromEmail); mail.setTemplateId("d-c6dcf1f72bdd4beeb15a9aa6c72fcd2c"); Personalization personalization = new Personalization(); personalization.addDynamicTemplateData("name", "Example User"); personalization.addDynamicTemplateData("city", "Denver"); personalization.addTo(new Email("test@example.com")); mail.addPersonalization(personalization); return mail; } // Minimum required to send an email public static Mail buildHelloEmail() { Email from = new Email("test@example.com"); String subject = "Hello World from the Twilio SendGrid Java Library"; Email to = new Email("test@example.com"); Content content = new Content("text/plain", "some text here"); // Note that when you use this constructor an initial personalization object // is created for you. It can be accessed via // mail.personalization.get(0) as it is a List object Mail mail = new Mail(from, subject, to, content); Email email = new Email("test2@example.com"); mail.personalization.get(0).addTo(email); return mail; } public static void baselineExample() throws IOException { final Mail helloWorld = buildHelloEmail(); send(helloWorld); } public static void kitchenSinkExample() throws IOException { final Mail kitchenSink = buildKitchenSink(); send(kitchenSink); } public static void dynamicTemplateExample() throws IOException { final Mail dynamicTemplate = buildDynamicTemplate(); send(dynamicTemplate); } private static void send(final Mail mail) throws IOException { final SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY")); sg.addRequestHeader("X-Mock", "true"); final Request request = new Request(); request.setMethod(Method.POST); request.setEndpoint("mail/send"); request.setBody(mail.build()); final Response response = sg.api(request); System.out.println(response.getStatusCode()); System.out.println(response.getBody()); System.out.println(response.getHeaders()); } public static void main(String[] args) throws IOException { baselineExample(); kitchenSinkExample(); dynamicTemplateExample(); } }