Some examples of sending and receiving emails with Node.js
-
-
Save marcozingaro/fa73ff607253d87cbe01 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "name": "My Name" | |
| "email": "user@domain.com", | |
| "username": "user@gmail.com", | |
| "password": "MYPASSWORD", | |
| "imap": { | |
| "host": "imap.gmail.com", | |
| "port": 993, | |
| "secure": true | |
| }, | |
| "smtp": { | |
| "host": "smtp.gmail.com", | |
| "ssl": true | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This example script opens an IMAP connection to the server and | |
| # seeks unread messages sent by the user himself. It will then | |
| # download those messages, parse them, and write their attachments | |
| # to disk. | |
| # Install node-imap with `npm install imap` | |
| imap = require "imap" | |
| # Install mailparser with `npm install mailparser` | |
| mailparser = require "mailparser" | |
| # You need a config file with your email settings | |
| fs = require "fs" | |
| config = JSON.parse fs.readFileSync "#{process.cwd()}/config.json", "utf-8" | |
| server = new imap.ImapConnection | |
| username: config.username | |
| password: config.password | |
| host: config.imap.host | |
| port: config.imap.port | |
| secure: config.imap.secure | |
| exitOnErr = (err) -> | |
| console.error err | |
| do process.exit | |
| server.connect (err) -> | |
| exitOnErr err if err | |
| server.openBox "INBOX", false, (err, box) -> | |
| exitOnErr err if err | |
| console.log "You have #{box.messages.total} messages in your INBOX" | |
| server.search ["UNSEEN", ["SINCE", "Sep 18, 2011"], ["FROM", config.email]], (err, results) -> | |
| exitOnErr err if err | |
| unless results.length | |
| console.log "No unread messages from #{config.email}" | |
| do server.logout | |
| return | |
| fetch = server.fetch results, | |
| request: | |
| body: "full" | |
| headers: false | |
| fetch.on "message", (message) -> | |
| fds = {} | |
| filenames = {} | |
| parser = new mailparser.MailParser | |
| parser.on "headers", (headers) -> | |
| console.log "Message: #{headers.subject}" | |
| parser.on "astart", (id, headers) -> | |
| filenames[id] = headers.filename | |
| fds[id] = fs.openSync headers.filename, 'w' | |
| parser.on "astream", (id, buffer) -> | |
| fs.writeSync fds[id], buffer, 0, buffer.length, null | |
| parser.on "aend", (id) -> | |
| return unless fds[id] | |
| fs.close fds[id], (err) -> | |
| return console.error err if err | |
| console.log "Writing #{filenames[id]} completed" | |
| message.on "data", (data) -> | |
| parser.feed data.toString() | |
| message.on "end", -> | |
| do parser.end | |
| fetch.on "end", -> | |
| do server.logout |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This script will send an image as an email attachment to the | |
| # user himself. The receiving part of this is in read.coffee | |
| # Install EmailJS with `npm install emailjs` | |
| email = require "emailjs" | |
| # You need a config file with your email settings | |
| fs = require "fs" | |
| config = JSON.parse fs.readFileSync "#{process.cwd()}/config.json", "utf-8" | |
| server = email.server.connect | |
| user: config.username | |
| password: config.password | |
| host: config.smtp.host | |
| ssl: config.smtp.ssl | |
| message = email.message.create | |
| text: "This is test" | |
| from: "#{config.name} <#{config.email}>" | |
| to: "#{config.name} <#{config.email}>" | |
| subject: "Testing Node.js email capabilities" | |
| message.attach "reading.png", "image/png", "reading-image.png" | |
| server.send message, (err, message) -> | |
| return console.error err if err | |
| console.log "Message sent with id #{message['header']['message-id']}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
