SparkPost client library for Java
Java Shell HTML
Latest commit e149522 Mar 2, 2018

Sign up for a SparkPost account and visit our Developer Hub for even more content.

SparkPost Java Library

Build Status Slack Status

Use this library in Java applications to easily access the SparkPost Email API in your application.

Version Compatibility Note

Version 0.6.2 -> 0.6.3

Due to issue 57 and to maintain compatibility with old and new version of Apache HTTP Client SPARKPOST_BASE_URL must not end with a / slash.

Version 0.12 -> 0.13

Although we try to maintain library backward compatibility this migration may require some minor changes to your code. Substitution data was changed from Map<String, String> to Map<String, Object>. Most client code will just need to change their map to this new signature.

Getting Started

The SparkPost Java Library is available in this Maven Repository or in GitHub Releases.


Building SparkPost4J

Basic Send Email Example

package com.sparkpost;

import com.sparkpost.exception.SparkPostException;

public class SparkPost {

    public static void main(String[] args) throws SparkPostException {
        String API_KEY = "YOUR API KEY HERE!!!";
        Client client = new Client(API_KEY);

                "The subject of the message",
                "The text part of the email",
                "<b>The HTML part of the email</b>");


Advanced Send Email Example

With SparkPost you have complete control over all aspects of an email and a powerful templating solution.

private void sendEmail(String from, String[] recipients, String email) throws SparkPostException {
	TransmissionWithRecipientArray transmission = new TransmissionWithRecipientArray();

	// Populate Recipients
	List<RecipientAttributes> recipientArray = new ArrayList<RecipientAttributes>();
	for (String recipient : recipients) {
	RecipientAttributes recipientAttribs = new RecipientAttributes();
		recipientAttribs.setAddress(new AddressAttributes(recipient));

	 // Populate Substitution Data
    Map<String, Object> substitutionData = new HashMap<String, Object>();
    substitutionData.put("yourContent", "You can add substitution data too.");

    // Populate Email Body
    TemplateContentAttributes contentAttributes = new TemplateContentAttributes();
    contentAttributes.setFrom(new AddressAttributes(from));
    contentAttributes.setSubject("Your subject content here. {{yourContent}}");
    contentAttributes.setText("Your Text content here.  {{yourContent}}");
    contentAttributes.setHtml("<p>Your <b>HTML</b> content here.  {{yourContent}}</p>");

	// Send the Email
	RestConnection connection = new RestConnection(client, getEndPoint());
	Response response = ResourceTransmissions.create(connection, 0, transmission);

	logger.debug("Transmission Response: " + response);

Running The Sample Apps

The sample apps are held in apps/sparkpost-samples-app with each sample's source code in apps/sparkpost-samples-app/src/main/java/com/sparkpost/samples/.

To build the samples:

cd apps/sparkpost-samples-app
mvn compile

One the samples are built, create by copying apps/sparkpost-samples-app/ and filling in your SparkPost API key and other test parameters.

You can now run your chosen sample through maven:

mvn exec:java -Dexec.mainClass=com.sparkpost.samples.SendEmailCCSample