This example connects to an imap server and retrieves emails
npm install imap mailparser
This example connects to an imap server and retrieves emails
npm install imap mailparser
| // trust all certificates | |
| process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; | |
| var Imap = require('imap'), | |
| inspect = require('util').inspect; | |
| var fs = require('fs'); | |
| const simpleParser = require('mailparser').simpleParser; | |
| var imap = new Imap({ | |
| user: 'test@local', | |
| password: 'test', | |
| host: 'localhost', | |
| port: 32796, | |
| tls: true | |
| }); | |
| function openInbox(cb) { | |
| imap.openBox('INBOX', true, cb); | |
| } | |
| imap.once('ready', function() { | |
| openInbox(function(err, box) { | |
| if (err) throw err; | |
| console.log(box.messages.total + ' message(s) found!'); | |
| // 1:* - Retrieve all messages | |
| // 3:5 - Retrieve messages #3,4,5 | |
| var f = imap.seq.fetch('1:1', { | |
| bodies: '' | |
| }); | |
| f.on('message', function(msg, seqno) { | |
| console.log('Message #%d', seqno); | |
| var prefix = '(#' + seqno + ') '; | |
| msg.on('body', function(stream, info) { | |
| // use a specialized mail parsing library (https://github.com/andris9/mailparser) | |
| simpleParser(stream, (err, mail) => { | |
| console.log(prefix + mail.subject); | |
| console.log(prefix + mail.text); | |
| }); | |
| // or, write to file | |
| //stream.pipe(fs.createWriteStream('msg-' + seqno + '-body.txt')); | |
| }); | |
| msg.once('attributes', function(attrs) { | |
| console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8)); | |
| }); | |
| msg.once('end', function() { | |
| console.log(prefix + 'Finished'); | |
| }); | |
| }); | |
| f.once('error', function(err) { | |
| console.log('Fetch error: ' + err); | |
| }); | |
| f.once('end', function() { | |
| console.log('Done fetching all messages!'); | |
| imap.end(); | |
| }); | |
| // search example | |
| // imap.search([ 'UNSEEN', ['SINCE', 'May 20, 2010'] ], function(err, results) { | |
| // if (err) throw err; | |
| // var f = imap.fetch(results, { bodies: '' }); | |
| // ... | |
| // } | |
| }); | |
| }); | |
| imap.once('error', function(err) { | |
| console.log(err); | |
| }); | |
| imap.once('end', function() { | |
| console.log('Connection ended'); | |
| }); | |
| imap.connect(); |
you can get this from headers:
mail.headers.get('from')
but "mail.from" should give you the same things.
But you get a JSON object not directly a string with email address:
{ value:
[ { address: '[email protected]',
name: 'sender name' } ],
html:
'sender name in html format',
text: 'sender name with email' }
how to get FROM address?
mail.from isn't working.