package com.oreilly.jent.javamail;
/**
* In general, you may use the code in this book in your programs and
* documentation. You do not need to contact us for permission unless
* you're reproducing a significant portion of the code. For example,
* writing a program that uses several chunks of code from this book does
* not require permission. Selling or distributing a CD-ROM of examples
* from O'Reilly books does require permission. Answering a question by
* citing this book and quoting example code does not require permission.
* Incorporating a significant amount of example code from this book into
* your product's documentation does require permission.
*
* We appreciate, but do not require, attribution. An attribution usually
* includes the title, author, publisher, and ISBN. For example:
*
* "Java Enterprise in a Nutshell, Third Edition,
* by Jim Farley and William Crawford
* with Prakash Malani, John G. Norman, and Justin Gehtland.
* Copyright 2006 O'Reilly Media, Inc., 0-596-10142-2."
*
* If you feel your use of code examples falls outside fair use or the
* permission given above, feel free to contact us at
* permissions@oreilly.com.
*/
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.search.OrTerm;
import javax.mail.search.SearchTerm;
import javax.mail.search.SubjectTerm;
public class SpamCleaner {
static String mailhost = "imap.mycompany.com";
static String smtphost = "mail.mycompany.com";
static String redirectEmail = "spamlog@mycompany.com";
static String[] badSubjects = {"XXX", "MAKEMONEYFAST", "!!!!"};
public static void main(String[] args) {
Properties props = new Properties( );
props.setProperty("mail.smtp.host", smtphost);
Session session = Session.getDefaultInstance(props, null);
try {
Store imapStore = session.getStore("imap");
imapStore.connect(mailhost, "scott", "yu7xx");
Folder defaultFolder = imapStore.getDefaultFolder( );
Folder inboxFolder = defaultFolder.getFolder("INBOX");
inboxFolder.open(Folder.READ_WRITE);
// Assemble some search criteria, using nested OrTerm objects
SearchTerm spamCriteria = null;
for (int i=0; i<badSubjects.length; i++) {
SubjectTerm st = new SubjectTerm(badSubjects[i]);
if(spamCriteria == null)
spamCriteria = st;
else
spamCriteria = new OrTerm(spamCriteria, st);
}
Message[] msgs = inboxFolder.search(spamCriteria);
if (msgs != null)
for (int i = 0; i < msgs.length; i++) {
// Redirect the message
Message m = new MimeMessage((MimeMessage)msgs[i]);
m.setRecipient(Message.RecipientType.TO,
new InternetAddress(redirectEmail));
// Clear out the cc: field so we don't loop or anything
m.setHeader("CC", "");
Transport.send(m);
// Now delete the original
System.out.println("Deleting Message " +
msgs[i].getMessageNumber( ) + ":"
+ msgs[i].getSubject( ));
msgs[i].setFlag(Flags.Flag.DELETED, true);
}
// Close inbox folder, with "Expunge" flag set to true
inboxFolder.close(true);
imapStore.close( );
}
catch (MessagingException me) {
me.printStackTrace(System.out);
}
} // End main( )
}
|