diff --git a/src/main/java/handler/ConfigHandler.java b/src/main/java/handler/ConfigHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..5a6b352164ba5f355d21358ad0161c446b89a227 --- /dev/null +++ b/src/main/java/handler/ConfigHandler.java @@ -0,0 +1,27 @@ +package handler; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class ConfigHandler { + private Properties prop; + + public ConfigHandler(String filename) { + this.prop = new Properties(); + try (InputStream input = getClass().getClassLoader().getResourceAsStream(filename)) { + this.prop.load(input); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + public String get(String key) { + return this.prop.getProperty(key); + } + + public static void main(String[] args) { + ConfigHandler ph = new ConfigHandler("config.email"); + System.out.println(ph.get("mail.smtp.password")); + } +} \ No newline at end of file diff --git a/src/main/java/utils/EmailUtil.java b/src/main/java/utils/EmailUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..e6613d524b5b6cedac89cfb6417803367872de65 --- /dev/null +++ b/src/main/java/utils/EmailUtil.java @@ -0,0 +1,67 @@ +package utils; + +import handler.ConfigHandler; +import javax.mail.*; +import javax.mail.internet.AddressException; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.util.Properties; + +public class EmailUtil { + private static EmailUtil instance; + + public static EmailUtil getInstance() { + if (instance == null) { + instance = new EmailUtil(); + } + return instance; + } + + // private String[] getAdminEmails(){ + + // } + + public void sendEmail(String to, String sub, String body){ + try { + ConfigHandler ch = new ConfigHandler("config.email"); + + Properties props = System.getProperties(); + props.put("mail.smtp.host", ch.get("mail.smtp.host")); + props.put("mail.smtp.port", ch.get("mail.smtp.port")); + props.put("mail.smtp.ssl.enable",ch.get("mail.smtp.ssl.enable")); + props.put("mail.smtp.auth", ch.get("mail.smtp.auth")); + + Authenticator auth = authenticator(ch); + Session session = Session.getInstance(props, auth); + + MimeMessage msg = new MimeMessage(session); + msg.setFrom(new InternetAddress(ch.get("mail.smtp.username"))); + msg.setRecipients(Message.RecipientType.TO, to); + msg.setSubject(sub, "UTF-8"); + msg.setText(body, "UTF-8"); + + System.out.println("Message is ready"); + Transport.send(msg); + System.out.println("EMail Sent Successfully!!"); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + private Authenticator authenticator(ConfigHandler ph) { + String username = ph.get("mail.smtp.username"); + String password = ph.get("mail.smtp.password"); + Authenticator auth = new Authenticator() { + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }; + return auth; + } + + public static void main(String[] args) throws AddressException { + final String toEmail = "13521130@std.stei.itb.ac.id"; + EmailUtil.getInstance().sendEmail(toEmail,"Subsription Notification", "Qwerty Uiopasdf Fghjkl Zxcvbn"); + } +} \ No newline at end of file