Lutung - a Java interface to the Mandrill API. Check out Mandrill's API [Documentation] (https://mandrillapp.com/api/docs/) to see all the possible magic.
Features:
- all public API calls are implemented.
- easy library set up; just provide your api key that you got from Mandrill.
- all API calls are exposed through one simple interface: the MandrillApi class.
- easy, intuitive naming scheme. All function-names are derived from the Mandrill API calls: if there is a call with the address '/messages/send.json', then we have a function for that called 'MandrillApi.messages().send(...)'.
- API request errors are exposed to the user (you!) as a MandrillApiError.
If you're using Maven, just add this dependency to your pom.xml:
<dependency>
<groupId>com.mandrillapp.wrapper.lutung</groupId>
<artifactId>lutung</artifactId>
<version>0.0.5</version>
</dependency>
If you're not using Maven, see Dependencies below.
The 'whoami' of Mandrill:
MandrillApi mandrillApi = new MandrillApi("<put ur Mandrill API key here>");
MandrillUserInfo user = mandrillApi.users().info();
// pretty-print w/ gson
Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println( gson.toJson(user) );
Send a 'Hello World!' email
MandrillApi mandrillApi = new MandrillApi("<put ur Mandrill API key here>");
// create your message
MandrillMessage message = new MandrillMessage();
message.setSubject("Hello World!");
message.setHtml("<h1>Hi pal!</h1><br />Really, I'm just saying hi!");
message.setAutoText(true);
message.setFromEmail("kitty@yourdomain.com");
message.setFromName("Kitty Katz");
// add recipients
ArrayList<Recipient> recipients = new ArrayList<Recipient>();
Recipient recipient = new Recipient();
recipient.setEmail("claireannette@someotherdomain.com");
recipient.setName("Claire Annette");
recipients.add(recipient);
recipient = new Recipient();
recipient.setEmail("terrybull@yetanotherdomain.com");
recipients.add(recipient);
message.setTo(recipients);
message.setPreserveRecipients(true);
ArrayList<String> tags = new ArrayList<String>();
tags.add("test");
tags.add("helloworld");
message.setTags(tags);
// ... add more message details if you want to!
// then ... send
MandrillMessageStatus[] messageStatusReports = mandrillApi
.messages().send(message, false);
Error handling for Mandrill API errors
MandrillApi mandrillApi = new MandrillApi("<put ur Mandrill API key here>");
try {
MandrillUserInfo user = mandrillApi.users().info();
} catch(final MandrillApiError e) {
log.error(e.getMandrillErrorAsJson(), e);
}
Create a new template
MandrillApi mandrillApi = new MandrillApi("<put ur Mandrill API key here>");
MandrillTemplate newTemplate = mandrillApi.templates().add(
"test_template_001",
"<html><body><h1>Hello World!</h1></body></html>",
false);
If you're not using Maven, here's a list of dependencies. Just make sure these jar files are on your classpath:
-
The metadata returned by the mandrill api on /messages/search.json does not get mapped to a member of MandrillMessageInfo
-
So far, I failed to successfully use Mandrills /messages/send-raw.json call. I'm not sure if I fail to create valid MIME contents, but lemme know if you make any experience with this call.
-
Also, I have no inbound-emailing set up with Mandrill. Would be great if anyone out there could test the implemented 'inbound' functionalities.
Sure! Just shoot me an email and let me know about your ideas.
A monkey!!! The Javan Lutung is the name giver for this project; hat tip to MailChimp's naming scheme.
This library is released under the GNU Lesser General Public License http://www.gnu.org/licenses/lgpl.html.
- Added messages/content.json (thanks @benfastmodel)
- Now regarding JVM proxy parameters (thanks @joseanibl138)
- Made commons-logging dependency optional (thanks @aldenquimby)
- Added support for Mandrill sub accounts in MandrillApi.subaccounts.
- More support for rejects (blacklists): add and delete; also, list rejects for sub accounts.
- Added support for whitelists in MandrillApi.whitelists.
- Added support to manage sender-domains in MandrillApi.senders.
- Added support to update templates in MandrillApi.templates.
- Added support for exports in MandrillApi.exports.
- Added support for dedicated IPs and IP Pools in MandrillApi.ips.