Guest User

Untitled

a guest
Mar 24th, 2018
1,078
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.43 KB | None | 0 0
  1. package emailattachmentsdownloader;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.Properties;
  5. import javax.mail.Address;
  6. import javax.mail.Folder;
  7. import javax.mail.Message;
  8. import javax.mail.MessagingException;
  9. import javax.mail.Multipart;
  10. import javax.mail.NoSuchProviderException;
  11. import javax.mail.Part;
  12. import javax.mail.Session;
  13. import javax.mail.Store;
  14. import javax.mail.internet.MimeBodyPart;
  15. /**
  16. * This program demonstrates how to download e-mail messages and save
  17. * attachments into files on disk.
  18. *
  19. *
  20. *
  21. */
  22. public class EmailAttachmentsDownloader {
  23. private String saveDirectory;
  24. /**
  25. * Sets the directory where attached files will be stored.
  26. * @param dir absolute path of the directory
  27. */
  28. public void setSaveDirectory(String dir) {
  29. this.saveDirectory = dir;
  30. }
  31. /**
  32. * Downloads new messages and saves attachments to disk if any.
  33. * @param host
  34. * @param port
  35. * @param userName
  36. * @param password
  37. */
  38. public void downloadEmailAttachments(String host, String port,
  39. String userName, String password) {
  40. Properties properties = new Properties();
  41.  
  42. // server setting
  43. properties.put("mail.pop3.host", host);
  44. properties.put("mail.pop3.port", port);
  45.  
  46. // SSL setting
  47. properties.setProperty("mail.pop3.socketFactory.class",
  48. "javax.net.ssl.SSLSocketFactory");
  49. properties.setProperty("mail.pop3.socketFactory.fallback", "false");
  50. properties.setProperty("mail.pop3.socketFactory.port",
  51. String.valueOf(port));
  52.  
  53. Session session = Session.getDefaultInstance(properties);
  54.  
  55. try {
  56. // connects to the message store
  57. Store store = session.getStore("pop3");
  58. store.connect(userName, password);
  59.  
  60. // opens the inbox folder
  61. Folder folderInbox = store.getFolder("INBOX");
  62. folderInbox.open(Folder.READ_ONLY);
  63.  
  64. // fetches new messages from server
  65. Message[] arrayMessages = folderInbox.getMessages();
  66.  
  67. for (int i = 0; i < arrayMessages.length; i++) {
  68. Message message = arrayMessages[i];
  69. Address[] fromAddress = message.getFrom();
  70. String from = fromAddress[0].toString();
  71. String subject = message.getSubject();
  72. String sentDate = message.getSentDate().toString();
  73.  
  74. String contentType = message.getContentType();
  75. String messageContent = "";
  76.  
  77. // store attachment file name, separated by comma
  78. String attachFiles = "";
  79.  
  80. if (contentType.contains("multipart")) {
  81. // content may contain attachments
  82. Multipart multiPart = (Multipart) message.getContent();
  83. int numberOfParts = multiPart.getCount();
  84. for (int partCount = 0; partCount < numberOfParts; partCount++) {
  85. MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
  86. if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
  87. // this part is attachment
  88. String fileName = part.getFileName();
  89. attachFiles += fileName + ", ";
  90. part.saveFile(saveDirectory + File.separator + fileName);
  91. } else {
  92. // this part may be the message content
  93. messageContent = part.getContent().toString();
  94. }
  95. }
  96.  
  97. if (attachFiles.length() > 1) {
  98. attachFiles = attachFiles.substring(0, attachFiles.length() - 2);
  99. }
  100. } else if (contentType.contains("text/plain")
  101. || contentType.contains("text/html")) {
  102. Object content = message.getContent();
  103. if (content != null) {
  104. messageContent = content.toString();
  105. }
  106. }
  107.  
  108. // print out details of each message
  109. System.out.println("Message #" + (i + 1) + ":");
  110. System.out.println("t From: " + from);
  111. System.out.println("t Subject: " + subject);
  112. System.out.println("t Sent Date: " + sentDate);
  113. System.out.println("t Message: " + messageContent);
  114. System.out.println("t Attachments: " + attachFiles);
  115. }
  116.  
  117. // disconnect
  118. folderInbox.close(false);
  119. store.close();
  120. } catch (NoSuchProviderException ex) {
  121. System.out.println("No provider for pop3.");
  122. ex.printStackTrace();
  123. } catch (MessagingException ex) {
  124. System.out.println("Could not connect to the message store");
  125. ex.printStackTrace();
  126. } catch (IOException ex) {
  127. ex.printStackTrace();
  128. }
  129. }
  130.  
  131. /**
  132. * Runs this program with Gmail POP3 server
  133. */
  134. public static void main(String[] args) {
  135. String host = "pop.gmail.com";
  136. String port = "995";
  137. String userName = "MYMAIL";
  138. String password = "MYPASS";
  139.  
  140. String saveDirectory = "D:/Attachments";
  141.  
  142. EmailAttachmentsDownloader receiver = new
  143. EmailAttachmentsDownloader();
  144. receiver.setSaveDirectory(saveDirectory);
  145. receiver.downloadEmailAttachments(host, port, userName, password);
  146.  
  147. }
  148. }
  149.  
  150. Exception in thread "main" java.lang.NoClassDefFoundError:
  151. com/sun/mail/util/MailLogger
  152. at javax.mail.Session.initLogger(Session.java:227)
  153. at javax.mail.Session.<init>(Session.java:212)
  154. at javax.mail.Session.getDefaultInstance(Session.java:315)
  155. at javax.mail.Session.getDefaultInstance(Session.java:355)
  156. at emailattachmentsdownloader.EmailAttachmentsDownloader.downloadEmailAttachments(EmailAttachmentsDownloader.java:53)
  157. at emailattachmentsdownloader.EmailAttachmentsDownloader.main(EmailAttachmentsDownloader.java:144)
  158. Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger
  159. at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  160. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  161. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  162. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  163. ... 6 more
  164. C:UsersAcaAppDataLocalNetBeansCache8.2executor-snippetsrun.xml:53:
  165. Java returned: 1
  166. BUILD FAILED (total time: 0 seconds)
Add Comment
Please, Sign In to add comment