Lutung
Lutung - A Java Mandrill API Connector
Install / Use
/learn @rschreijer/LutungREADME
Lutung - Java Mandrill API
NOTE: this project is no longer maintained.
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.
Installation
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.8</version>
</dependency>
If you're not using Maven, see Dependencies below.
Examples
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);
<a name="dependencies"></a> Dependencies
If you're not using Maven, here's a list of dependencies. Just make sure these jar files are on your classpath:
Known Issues
-
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.
Lutung? Huh?
A monkey!!! The Javan Lutung is the name giver for this project; hat tip to MailChimp's naming scheme.
License
This library is released under the GNU Lesser General Public License http://www.gnu.org/licenses/lgpl.html.
Release 0.0.8 - Release Notes
-
Fixed thread safety issue with
SimpleDateFormat, create a new one each time. look thanks chrisburrell -
Added additional fields to smtp data look thanks lvogelzang
-
Make the root URL configurable look
Release 0.0.7 - Release Notes
- Fixed custom_quota field in the submarkets API look thanks Lokesh-Github123
- Re-enabled headers on MandrillMessageContent look
- Re-enabled metadata on MandrillMessageInfo look
- Catch Json parsing exceptions and throw a MandrillError with the body of the response as the message look
Release 0.0.6 - Release Notes
- Support to specify the merge-language when using templates, look
- Fixing endpoint URI for 'parse', look
- Better Android compatibility, look
- Added lables for templates, look
Thanks billoneil
Release 0.0.5 - Release Notes
- Added messages/content.json (thanks @benfastmodel)
- Now regarding JVM proxy parameters (thanks @joseanibl138)
- Made commons-logging dependency optional (thanks @aldenquimby)
Release 0.0.3 - Release Notes
- 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.
Related Skills
node-connect
348.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
348.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
