grabbed
Version:
grabs emails and pulls attachments and dumps into a folder.
79 lines (65 loc) • 1.9 kB
text/coffeescript
Imap = require("imap")
path = require("path")
fs = require("fs")
mkdirp = require("mkdirp").sync
child_process = require("child_process")
inspect = require("util").inspect
imap = new Imap(
user: process.env.GRABBED_USER
password: process.env.GRABBED_PW
host: "imap.gmail.com"
port: 993
tls: true
tlsOptions:
rejectUnauthorized: false
)
process.on "uncaughtException",(err) ->
console.log err.message
imap.end()
messagesPath = path.join(process.cwd(),"/messages/")
parsedPath = path.join(process.cwd(),'done')
messages = []
openInbox = (cb) ->
imap.openBox "[Gmail]/cctv_shots", false, cb
fetchMessages = (callback) ->
cb = callback
imap.search ["UNSEEN", ["SINCE", "May 20, 2010"]], (err, results) ->
#throw err if err
#console.log box
f = imap.fetch results,
markSeen:true
bodies:''
f.on "message", (msg, seqno) ->
#console.log msg
console.log "Message #%d", seqno
prefix = "(#" + seqno + ") "
msg.on "body", (stream, info) ->
stream.pipe fs.createWriteStream(path.join(messagesPath,"msg-#{seqno}-body.txt"))
return
msg.once "end", ->
f.once "error", (err) ->
#return cb(new Error(err)) if err?
#console.log "Fetch error: " + err
f.once "end", ->
console.log "Done fetching all messages!"
console.log "Starting parser!"
console.log "cwd: #{process.cwd()}"
cb(null)
imap.once "ready", ->
mkdirp(messagesPath)
openInbox (err, box) ->
#throw err if err?
fetchMessages (err) ->
if err?
console.log err.message
else
console.log "Fetched messages"
imap.end()
imap.once "error", (err) ->
#throw err if err?
imap.once "end", ->
console.log "Connection ended"
cp = child_process.fork(path.join(process.cwd(),'lib/parser.js'))
cp.on "exit", ->
process.exit()
imap.connect()