Marc Hauschildt
Web Technologies and Computer Software Development Instructor at Kirkwood Community College in Cedar Rapids, IA.
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-TOKENBy Marc Hauschildt
Web Technologies and Computer Software Development Instructor at Kirkwood Community College in Cedar Rapids, IA.