Mailtrap allows up to 1,000 emails to be sent per month for free.
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"from\":{\"email\":\"mailtrap@example.com\",\"name\":\"Mailtrap Test\"},\"to\":[{\"email\":\"your-email@example.com\"}],\"subject\":\"You are awesome!\",\"text\":\"Congrats for sending test email with Mailtrap!\",\"category\":\"Integration Test\"}");
Request request = new Request.Builder()
.url("https://sandbox.api.mailtrap.io/api/send/YOUR-INBOX-ID")
.method("POST", body)
.addHeader("Authorization", "Bearer YOUR-TEST-API-CODE")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();try {
Response response = client.newCall(request).execute();
System.out.println("Email sent");
} catch (IOException e) {
System.out.println("Email not sent");
}{
"from": {
"email": "mailtrap@example.com",
"name": "Mailtrap Test"
},
"to": [
{
"email": "your-email@example.com"
}
],
"subject": "You are awesome!",
"text": "Congrats for sending test email with Mailtrap!",
"category": "Integration Test"
}public class MailtrapPerson {
private String email;
private String name;
public MailtrapPerson(String email) {
this.email = email;
this.name = "";
}
public MailtrapPerson(String email, String name) {
this.email = email;
this.name = name;
}
public String getEmail() {
return email;
}
public String getName() {
return name;
}
}public class MailtrapEmail {
private MailtrapPerson from;
private List<MailtrapPerson> to;
private String subject;
private String text;
private String category;
public MailtrapEmail(MailtrapPerson from, List<MailtrapPerson> to, String subject, String text, String category) {
this.from = from;
this.to = to;
this.subject = subject;
this.text = text;
this.category = category;
}
public MailtrapPerson getFrom() {
return from;
}
public List<MailtrapPerson> getTo() {
return to;
}
public String getSubject() {
return subject;
}
public String getText() {
return text;
}
public String getCategory() {
return category;
}
}OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
MailtrapPerson from = new MailtrapPerson("mailtrap@example.com", "Mailtrap Test");
List<MailtrapPerson> to = new ArrayList<>();
to.add(new MailtrapPerson("your-email@example.com"));
String subject = "You are awesome!";
String text = "Congrats for sending test email with Mailtrap!";
String category = "Integration Test";
MailtrapEmail mailtrapEmail = new MailtrapEmail(from, to, subject, text, category);
String serializedMailtrapEmail = new Gson().toJson(mailtrapEmail);
RequestBody body = RequestBody.create(serializedMailtrapEmail, mediaType);
Request request = new Request.Builder()
.url("https://sandbox.api.mailtrap.io/api/send/2541140")
.method("POST", body)
.addHeader("Authorization", "Bearer 9a7fa0723b331f4eec4d5d5e5a9ba0ea")
.addHeader("Content-Type", "application/json")
.build();
try {
Response response = client.newCall(request).execute();
System.out.println("Email sent");
} catch (IOException e) {
System.out.println("Email not sent");
}String json = "{\"from\":{\"email\":\"mailtrap@example.com\",\"name\":\"Mailtrap Test\"},\"to\":[{\"email\":\"your-email@example.com\"}],\"subject\":\"You are awesome!\",\"text\":\"Congrats for sending test email with Mailtrap!\",\"category\":\"Integration Test\"}";
MailtrapEmail mailtrapEmail = new Gson().fromJson(json, MailtrapEmail.class);
System.out.println(mailtrapEmail.toString());String json = "{\"from\":{\"email\":\"mailtrap@example.com\",\"name\":\"Mailtrap Test\"},\"to\":[{\"email\":\"your-email@example.com\"}],\"subject\":\"You are awesome!\",\"text\":\"Congrats for sending test email with Mailtrap!\",\"category\":\"Integration Test\"}";
try {
MailtrapEmail mailtrapEmail = new Gson().fromJson(json, MailtrapEmail.class);
System.out.println(mailtrapEmail.toString());
} catch(JsonSyntaxException e) {
System.out.println("Invalid JSON");
}public class MailtrapEmail {
// Code omitted
@Override
public String toString() {
return "MailtrapEmail{" +
"from=" + from +
", to=" + to +
", subject='" + subject + '\'' +
", text='" + text + '\'' +
", category='" + category + '\'' +
'}';
}
}public class MailtrapPerson {
// Code omitted
@Override
public String toString() {
return "MailtrapPerson{" +
"email='" + email + '\'' +
", name='" + name + '\'' +
'}';
}
}.envEMAIL_SERVICE=mailtrap
ADMIN_EMAIL=YOUR-EMAIL
ADMIN_EMAIL_NAME=YOUR-NAME
MAILTRAP_HOST_URL=YOUR-MAILTRAP-HOST-URL
MAILTRAP_API_TOKEN=YOUR-MAILTRAP-API-TOKENpublic class MailtrapEmail {
// Code omitted
public static boolean send(String sendFromEmail, String sendFromName, String sendToEmail, String sendToName, String subject, String message, String category) {
String hostURL = getURL();
String apiToken = getToken();
MailtrapPerson from = new MailtrapPerson(sendFromEmail, sendFromName);
List<MailtrapPerson> to = new ArrayList<>();
to.add(new MailtrapPerson(sendToEmail, sendToName));
MailtrapEmail mailtrapEmail = new MailtrapEmail(from, to, subject, message, category);
String serializedMailtrapEmail = new Gson().toJson(mailtrapEmail);
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(serializedMailtrapEmail, mediaType);
Request request = new Request.Builder()
.url(hostURL)
.method("POST", body)
.addHeader("Authorization", "Bearer " + apiToken)
.addHeader("Content-Type", "application/json")
.build();
try(Response response = client.newCall(request).execute()) {
return response.isSuccessful();
} catch (IOException e) {
return false;
}
}
private static String getURL() {
Dotenv dotenv = Dotenv.load();
String url = dotenv.get("MAILTRAP_HOST_URL");
if(url == null) {
throw new RuntimeException("MAILTRAP_HOST_URL environment variable not set");
}
return url;
}
private static String getToken() {
Dotenv dotenv = Dotenv.load();
String url = dotenv.get("MAILTRAP_API_TOKEN");
if(url == null) {
throw new RuntimeException("MAILTRAP_API_TOKEN environment variable not set");
}
return url;
}
}public class EmailService {
public static boolean sendTestEmail(String sendToEmail, String sendToName) {
boolean sent = false;
String subject = "You are awesome!";
String message = "Congrats for sending test email!";
String emailService = getEmailService();
String[] sendFrom = getSendFrom("admin");
if(emailService.equals("mailtrap")) {
String category = "Integration test";
sent = MailtrapEmail.send(sendFrom[0], sendFrom[1], sendToEmail, sendToName, subject, message, category);
}
return sent;
}
private static String getEmailService() {
Dotenv dotenv = Dotenv.load();
String emailService = dotenv.get("EMAIL_SERVICE");
if(emailService == null) {
throw new RuntimeException("EMAIL_SERVICE environment variable not set");
}
return emailService;
}
private static String[] getSendFrom(String type) {
Dotenv dotenv = Dotenv.load();
String[] sendFrom = new String[2];
String sendFromEmail = "";
String sendFromName = "";
if(type.equals("admin")) {
sendFromEmail = dotenv.get("ADMIN_EMAIL");
sendFromName = dotenv.get("ADMIN_EMAIL_NAME");
if(sendFromEmail == null) {
throw new RuntimeException("ADMIN_EMAIL environment variable not set");
}
if(sendFromName == null) {
throw new RuntimeException("ADMIN_EMAIL_NAME environment variable not set");
}
}
sendFrom[0] = sendFromEmail;
sendFrom[1] = sendFromName;
return sendFrom;
}
}public class Main {
public static void main(String[] args) {
boolean sent = EmailService.sendTestEmail("YOUR-EMAIL-ADDRESS", "YOUR-NAME");
System.out.println(sent ? "Email sent" : "Email not sent");
}
}EMAIL_SERVICE=mailtrap
ADMIN_EMAIL=YOUR-DOMAIN-SPECIFIC-EMAIL
ADMIN_EMAIL_NAME=YOUR-NAME
MAILTRAP_HOST_URL=YOUR-MAILTRAP-PRODUCTION-HOST-URL
#YOUR-MAILTRAP-TEST-HOST-URL
MAILTRAP_API_TOKEN=YOUR-MAILTRAP-PRODUCTION-API-TOKEN
#YOUR-MAILTRAP-TEST-API-TOKEN