KahnClifford

model.MailAPI

Jul 21st, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.95 KB | None | 0 0
  1.  
  2. package model;
  3.  
  4. import java.util.HashMap;
  5. import java.util.Properties;
  6. import javax.mail.Message;
  7. import javax.mail.MessagingException;
  8. import javax.mail.PasswordAuthentication;
  9. import javax.mail.Session;
  10. import javax.mail.Transport;
  11. import javax.mail.internet.InternetAddress;
  12. import javax.mail.internet.MimeMessage;
  13. import javax.mail.Authenticator;
  14. import javax.mail.Folder;
  15. import javax.mail.Store;
  16.  
  17.  
  18. public class MailAPI {
  19.  
  20. private Properties props;
  21. private Session sess;
  22. private MimeMessage mimeMsg;
  23.  
  24. private Store store;
  25. private Folder folder;
  26. private Message[] msgs;
  27.  
  28. private String host;
  29. private String from;
  30. private char[] pwd;
  31. private String to;
  32.  
  33. private String errorMsg;
  34.  
  35. public MailAPI() {
  36. this.errorMsg = "";
  37.  
  38. this.host = "pop.gmail.com";
  39.  
  40. try {
  41. this.loadProperties();
  42. this.loadDefaultSender();
  43. this.loadSession();
  44. this.loadMimeMessage();
  45. } catch (Exception e) {
  46. errorMsg += "API initialization error: "+e.getMessage();
  47. }
  48.  
  49. }
  50.  
  51. public MailAPI(String prmEmail, char[] prmPassword){
  52. this.errorMsg = "";
  53.  
  54. this.host = "pop.gmail.com";
  55. try {
  56. this.loadProperties();
  57. this.setSenderEmail(prmEmail);
  58. this.setSenderPassword(prmPassword);
  59. this.loadSession();
  60. this.loadMimeMessage();
  61. } catch (Exception e) {
  62. errorMsg += "API initialization error: "+e.getMessage();
  63. }
  64. }
  65.  
  66. public String getError(){
  67. return errorMsg;
  68. }
  69.  
  70. public String getTo(){
  71. return this.to;
  72. }
  73.  
  74. public String getFrom(){
  75. return this.from;
  76. }
  77.  
  78. public boolean emptyPassword(){
  79. return pwd.equals(null);
  80. }
  81.  
  82. public void setSenderEmail(String prmEmail){
  83. from = prmEmail;
  84. }
  85.  
  86. public void setSenderPassword(char[] prmPwd){
  87. pwd = prmPwd;
  88. }
  89.  
  90. public void setRecipient(String prmEmail){
  91. to = prmEmail;
  92. }
  93.  
  94. private void loadDefaultSender() throws Exception{
  95. this.from = "email@gmail.com"; // email
  96. this.pwd = new char[]{'','',''}; // password
  97. }
  98.  
  99. public void getEmails(){
  100.  
  101. try {
  102. store = sess.getStore("pop3s");
  103. store.connect(host, from, String.valueOf(pwd));
  104.  
  105. folder = store.getFolder("INBOX");
  106. folder.open(Folder.READ_ONLY);
  107. msgs = folder.getMessages();
  108.  
  109.  
  110. System.out.println("messages.length--- " + msgs.length);
  111.  
  112. for (int i = 0, n = msgs.length; i < n; i++) {
  113. Message message = msgs[i];
  114. System.out.println("---------------------------------");
  115. System.out.println("Email Number " + (i + 1));
  116. System.out.println("Subject: " + message.getSubject());
  117. System.out.println("From: " + message.getFrom()[0]);
  118. System.out.println("Text: " + message.getContent().toString());
  119.  
  120. }
  121.  
  122. //close the store and folder objects
  123. folder.close(false);
  124. store.close();
  125.  
  126.  
  127. } catch (Exception e) {
  128. e.printStackTrace();
  129. }
  130.  
  131. }
  132.  
  133. public void sendMsg(String prmSub, String prmMsg){
  134. try {
  135. mimeMsg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
  136. mimeMsg.setSubject(prmSub);
  137. mimeMsg.setText(prmMsg);
  138.  
  139. Transport.send(mimeMsg);
  140. } catch (MessagingException e) {
  141. throw new RuntimeException(e);
  142. }
  143. }
  144.  
  145. private void loadMimeMessage() throws Exception{
  146. mimeMsg = new MimeMessage(sess);
  147. }
  148.  
  149. private void loadProperties() throws Exception{
  150. props = new Properties();
  151. //for SMTP
  152. props.put("mail.smtp.host", "smtp.gmail.com");
  153. props.put("mail.smtp.socketFactory.port", "465");
  154. props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
  155. props.put("mail.smtp.auth", "true");
  156. props.put("mail.smtp.port", "465");
  157.  
  158. //for POP3
  159. props.put("mail.store.protocol", "pop3");
  160. props.put("mail.pop3.host", "pop.gmail.com");
  161. props.put("mail.pop3.port", "995");
  162. props.put("mail.pop3.starttls.enable", "true");
  163. }
  164.  
  165. private void loadSession() throws Exception{
  166. sess = Session.getDefaultInstance(props,new APIAuth());
  167. }
  168.  
  169. private class APIAuth extends Authenticator{
  170.  
  171. @Override
  172. protected PasswordAuthentication getPasswordAuthentication() {
  173. return new PasswordAuthentication(from, String.valueOf(pwd));
  174. }
  175. }
  176.  
  177. }
Add Comment
Please, Sign In to add comment