import javax.mail.*
import java.util.Properties
def emailAddress = "you@gmail.com"
def password = "password"
def server = "imap.gmail.com"
def port = 993
def props = new Properties()
props.setProperty("mail.store.protocol", "imaps")
props.setProperty("mail.imaps.host", server)
props.setProperty("mail.imaps.port", port.toString())
//very important or you will get errors such as Exception in thread "main" com.sun.mail.util.DecodingException: BASE64Decoder: Error in encoded stream: needed 4 valid base64 characters but only got 1 before EOF, the 10 most recent characters were: "Q3w5ilxj2P"
props.setProperty("mail.imaps.partialfetch", "false");
def session = javax.mail.Session.getDefaultInstance(props, null)
def store = session.getStore("imaps")
store.connect(emailAddress, password)
println "connected to Gmail"
def inboxFolder = "INBOX"
def folder = store.getFolder(inboxFolder)
folder.open(Folder.READ_ONLY)
javax.mail.search.SearchTerm searchTerm = new javax.mail.search.AndTerm(
new javax.mail.search.SubjectTerm("SUBJECT YOUR ARE SEARCHING FOR"),
)
def messages = folder.search(searchTerm)
messages.eachWithIndex {message, i ->
def content = message.content
if (content instanceof javax.mail.Multipart) {
javax.mail.Multipart mp = (javax.mail.Multipart) content;
for (int j = 0; j < mp.getCount(); j++) {
javax.mail.Part part = mp.getBodyPart(j)
String disposition = part.getDisposition()
if (disposition != null && disposition.equalsIgnoreCase(javax.mail.Part.ATTACHMENT)) {
saveFile(part.getFileName(), part.getInputStream())
}
}
}
}
def saveFile(String fileName, InputStream inputStream) {
println 'Saving file: ' + fileName
def file = new File('/tmp/' + fileName)
if (file.exists()) {
for (int i = 0; file.exists(); i++) {
file = new File('/tmp/' + i + '_' + fileName)
}
}
file.append(inputStream)
println 'File saved: ' + fileName
}
Sunday, October 16, 2011
Download GMail email attachments by subject
I used to use my work scanner to scan all of my documents, photos, etc. So recently I needed to find something. However, since all of them are labeled as Document.pdf I had hard time finding what I was looking.
My options were to download my mail using Thunderbird and then search for those emails or to download one attachment at the time.
I did not like either. So, I wrote this simple groovy script that downloads attachments for a specific email subject.
US States Enum
So you can use it in your gsp pages
enum State {
Alabama("AL"),Montana("MT"),Alaska("AK"),Nebraska("NE"),
Arizona("AZ"),Nevada("NV"),Arkansas("AR"),NewHampshire("NH"),
California("CA"),NewJersey("NJ"),Colorado("CO"),NewMexico("NM"),
Connecticut("CT"),NewYork("NY"),Delaware("DE"),NorthCarolina("NC"),
Florida("FL"),NorthDakota("ND"),Georgia("GA"),Ohio("OH"),Hawaii("HI"),
Oklahoma("OK"),Idaho("ID"),Oregon("OR"),Illinois("IL"),Pennsylvania("PA"),
Indiana("IN"),RhodeIsland("RI"),Iowa("IA"),SouthCarolina("SC"),Kansas("KS"),
SouthDakota("SD"),Kentucky("KY"),Tennessee("TN"),Louisiana("LA"),Texas("TX"),
Maine("ME"),Utah("UT"),Maryland("MD"),Vermont("VT"),Massachusetts("MA"),
Virginia("VA"),Michigan("MI"),Washington("WA"),Minnesota("MN"),
WestVirginia("WV"),Mississippi("MS"),Wisconsin("WI"),Missouri("MO"),Wyoming("WY")
final String value
State(String value) {
this.value = value
}
String toString() {
value
}
String getKey() {
name()
}
}
Subscribe to:
Comments (Atom)