hd1

hd1/GMailMaintain

hd1
Feb 4th, 2015
664
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 5.06 KB | None | 0 0
  1. package us.d8u;
  2. import java.io.PrintWriter;
  3. import java.util.Properties;
  4. import javax.mail.AuthenticationFailedException;
  5. import javax.mail.Flags.Flag;
  6. import javax.mail.Folder;
  7. import javax.mail.internet.InternetAddress;
  8. import javax.mail.Message;
  9. import javax.mail.MessagingException;
  10. import javax.mail.NoSuchProviderException;
  11. import javax.mail.Session;
  12. import javax.mail.Store;
  13. import org.joda.time.DateTime;
  14. import org.apache.commons.cli.CommandLine;
  15. import org.apache.commons.cli.CommandLineParser;
  16. import org.apache.commons.cli.GnuParser;
  17. import org.apache.commons.cli.HelpFormatter;
  18. import org.apache.commons.cli.Options;
  19. import org.apache.commons.cli.ParseException;
  20. import org.apache.log4j.Logger;
  21. import org.apache.log4j.Level;
  22.  
  23. public class App
  24. {
  25.     private static Logger logger = Logger.getLogger("us.d8u.App");
  26.     private static boolean isValid(Message msg) throws MessagingException {
  27.         DateTime received = new DateTime(msg.getReceivedDate());
  28.         InternetAddress from = (InternetAddress)msg.getFrom()[0];
  29.         if (received.plusDays(30).isAfterNow() == false) return false;
  30.         //if (from.getAddress().equalsIgnoreCase(emailAddress)) return false;
  31.         if (msg.getFolder().getName().contains("Sent")) return false;
  32.         return true;
  33.     }
  34.  
  35.     public static void ProcessOptions(String[] args) throws ParseException {
  36.         Options options = new Options();
  37.         options.addOption("u", "user", true, "Gmail username");
  38.         options.addOption("p", "password", true, "Gmail passsword");
  39.         options.addOption("v", "verbose", false, "Be verbose");
  40.         CommandLineParser parser = new GnuParser();
  41.         CommandLine line = parser.parse(options, args);
  42.         if (line.hasOption("user")) {
  43.             System.setProperty("us.d8u.user", line.getOptionValue("user"));
  44.         }
  45.         if (line.hasOption("password")) {
  46.             System.setProperty("us.d8u.password", line.getOptionValue("password"));
  47.         }
  48.         if (line.hasOption("verbose")) {
  49.             logger.setLevel(Level.ALL);
  50.         }
  51.                    
  52.     }
  53.  
  54.     public static void main( String[] argv )
  55.     {
  56.         Options options = new Options();
  57.         options.addOption("u", "user", true, "Gmail username");
  58.         options.addOption("p", "password", true, "Gmail passsword");
  59.         options.addOption("v", "verbose", false, "Be verbose");        
  60.         try {
  61.             ProcessOptions(argv);
  62.         } catch (Throwable t) {
  63.             final HelpFormatter formatter = new HelpFormatter();
  64.             formatter.printHelp("Gmail", options);
  65.             System.exit(-1);
  66.         }
  67.  
  68.         Properties props = System.getProperties();
  69.         props.setProperty("mail.store.protocol", "imaps");
  70.         Session session = Session.getDefaultInstance(props, null);
  71.         Store store = null;
  72.         try {
  73.             store = session.getStore("imaps");
  74.         } catch (NoSuchProviderException e) {
  75.             logger.fatal(e.getMessage(), e);
  76.             System.exit(-1);
  77.         }
  78.         try {
  79.             store.connect("imap.gmail.com", System.getProperty("us.d8u.user"), System.getProperty("us.d8u.password"));
  80.         } catch (AuthenticationFailedException e) {
  81.             final HelpFormatter formatter = new HelpFormatter();
  82.             formatter.printHelp("Gmail", options);
  83.             System.exit(-1);
  84.         } catch (MessagingException e) {
  85.             logger.fatal(e.getMessage(), e);
  86.             System.exit(-1);
  87.         }
  88.  
  89.         // see which folders are available
  90.         try {
  91.             for (Folder fold : store.getDefaultFolder().list("*")) {
  92.                 logger.debug(fold.getName());
  93.             }
  94.         } catch (MessagingException e) {
  95.             logger.fatal(e.getMessage(), e);
  96.             System.exit(-1);
  97.         }
  98.  
  99.         Folder folder = null;
  100.         try {
  101.             folder = store.getFolder("INBOX");
  102.         } catch (MessagingException e) {
  103.             logger.fatal(e.getMessage(), e);
  104.             System.exit(-1);
  105.         }
  106.  
  107.         try {
  108.             folder.open(Folder.READ_WRITE);
  109.         } catch (MessagingException e) {
  110.             logger.fatal(e.getMessage(), e);
  111.             System.exit(-1);
  112.         }
  113.  
  114.         try {
  115.             for (Message msg : folder.getMessages()) {
  116.                 if (!isValid(msg)) {
  117.                     msg.setFlag(Flag.DELETED, true);
  118.                 }
  119.             }
  120.         } catch (MessagingException e) {
  121.             logger.fatal(e.getMessage(), e);
  122.             System.exit(-1);
  123.         }
  124.  
  125.         try {
  126.             folder.close(true); // expunge messages
  127.         } catch (MessagingException e) {
  128.             logger.fatal(e.getMessage(), e);
  129.             System.exit(-1);
  130.         }
  131.  
  132.         try {
  133.             folder = store.getFolder("Sent Mail");
  134.         } catch (MessagingException e) {
  135.             logger.fatal(e.getMessage(), e);
  136.             System.exit(-1);
  137.         }
  138.  
  139.         logger.debug("In sent mail");
  140.  
  141.         try {
  142.             folder.open(Folder.READ_WRITE);
  143.         } catch (MessagingException e) {
  144.             logger.fatal(e.getMessage(), e);
  145.             System.exit(-1);
  146.         }
  147.  
  148.         try {
  149.             for (Message msg : folder.getMessages()) {
  150.                 if (msg.getSubject().equals("Thought you might be interested")) {
  151.                     msg.setFlag(Flag.DELETED, true);
  152.                 }
  153.             }
  154.         } catch (MessagingException e) {
  155.             logger.fatal(e.getMessage(), e);
  156.             System.exit(-1);
  157.         }
  158.  
  159.         try {
  160.             folder.close(true);
  161.         } catch (MessagingException e) {
  162.             logger.fatal(e.getMessage(), e);
  163.             System.exit(-1);
  164.         }
  165.         try {
  166.             store.close();
  167.         } catch (MessagingException e) {
  168.             logger.fatal(e.getMessage(), e);
  169.             System.exit(-1);
  170.         }          
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment