Guest User

Untitled

a guest
Dec 26th, 2011
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7.  
  8. import javax.mail.Flags;
  9. import javax.mail.Folder;
  10. import javax.mail.Message;
  11. import javax.mail.MessagingException;
  12. import javax.mail.Multipart;
  13. import javax.mail.Part;
  14. import javax.mail.Store;
  15. import javax.mail.internet.MimeMultipart;
  16.  
  17. public class CarregaEmails {
  18. private List<EmailBean> emails;
  19. public CarregaEmails() {
  20. emails = new ArrayList<EmailBean>();
  21. }
  22.  
  23. /**
  24. * Método responsável por fazer um backup dentro do e-mail
  25. */
  26. private void backup(Store store, Folder folderInbox, String backupFolder,
  27. Message... messages) throws MessagingException {
  28. Folder folderBackup = store.getFolder(backupFolder);
  29. folderBackup.open(Folder.READ_WRITE);
  30. folderInbox.copyMessages(messages, folderBackup);
  31. folderBackup.close(true);
  32. }
  33.  
  34. /**
  35. * Método responsável por salvar o xml dentro do computador
  36. */
  37. private boolean saveFile(Part part) {
  38. try {
  39. InputStream is = part.getInputStream();
  40. File temp = new File("temp");
  41. if (!temp.exists()) {
  42. if (!temp.mkdir()) {
  43. return false;
  44. }
  45. }
  46. FileOutputStream fos = new FileOutputStream(temp.getAbsolutePath() + "/" + part.getFileName());
  47. int x = -1;
  48. while ((x = is.read()) != -1) {
  49. fos.write((char) x);
  50. }
  51. fos.flush();
  52. fos.close();
  53. return true;
  54. } catch (IOException e) {
  55. e.printStackTrace();
  56. return false;
  57. } catch (MessagingException e) {
  58. e.printStackTrace();
  59. return false;
  60. } catch (Throwable e) {
  61. e.printStackTrace();
  62. return false;
  63. }
  64. }
  65.  
  66. /*
  67. * Metodo responsavel por pegar o corpo do e-mail
  68. */
  69. public String getBody(Message message) throws IOException, MessagingException {
  70. // verifica se a mensagem veio em partes
  71. if(message.getContent() instanceof Multipart){
  72. Multipart mp = (Multipart) message.getContent();
  73. // percorre as partes da mensagem
  74. for(int i = 0; i < mp.getCount(); i++){
  75. Part part = mp.getBodyPart(i);
  76. // verifica se alguma das partes veio em outras partes, aconte quando vem e-mails com anexo
  77. if(part.getContent() instanceof MimeMultipart){
  78. MimeMultipart mm = (MimeMultipart) part.getContent();
  79. return mm.getBodyPart(0).getContent().toString();
  80. } else {
  81. return part.getContent().toString();
  82. }
  83. }
  84. }
  85. return "";
  86. }
  87.  
  88. /*
  89. * Metodo responsavel por pegar o anexo do e-mail
  90. */
  91. public Part getFileAttachment(Message message) throws MessagingException, IOException{
  92. if(message.getContent() instanceof Multipart){
  93. Multipart mp = (Multipart) message.getContent();
  94. for(int i = 0; i < mp.getCount(); i++){
  95. Part part = mp.getBodyPart(i);
  96. if(part.getDisposition() != null && part.getDisposition().equalsIgnoreCase(Part.ATTACHMENT)){
  97. if(part.getFileName().endsWith("xml")){
  98. return part;
  99. }
  100. }
  101. }
  102. }
  103. return null;
  104. }
  105.  
  106. public List<EmailBean> getFiles() {
  107. // itera sobre todas as contas
  108. for (Conta conta : ContasIO.getContas()) {
  109. try {
  110. Store store = conta.getStore();
  111. store.connect();
  112. Folder folder = store.getFolder(conta.getInbox());
  113. folder.open(Folder.READ_WRITE);
  114. // itera por todas as mensagens
  115. for (Message message : folder.getMessages()) {
  116. EmailBean email = new EmailBean();
  117. email.setSubject(message.getSubject());
  118. email.setFrom(message.getFrom()[0].toString());
  119. email.setDate(message.getSentDate());
  120. email.setContent(getBody(message));
  121. Part part = getFileAttachment(message);
  122. if (part != null) {
  123. email.setFileName(part.getFileName());
  124. if (saveFile(part)) {
  125. emails.add(email);
  126. // verifica se o protocolo é imap e se existe uma pasta para backup
  127. if (conta.getProtocolo().contains("imap") &&
  128. conta.getBackup() != null && !conta.getBackup().equals("")) {
  129. backup(store, folder, conta.getBackup(), message);
  130. }
  131. }
  132. message.setFlag(Flags.Flag.DELETED, true);
  133. }
  134. }
  135. folder.close(true);
  136. store.close();
  137. } catch (IOException e) {
  138. e.printStackTrace();
  139. } catch (MessagingException e) {
  140. e.printStackTrace();
  141. }
  142. }
  143. return emails;
  144. }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment