Skip to content

Instantly share code, notes, and snippets.

@dex4er
Created August 28, 2016 08:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dex4er/60a9670f25e558367d2bc0073ccf6ad1 to your computer and use it in GitHub Desktop.
Save dex4er/60a9670f25e558367d2bc0073ccf6ad1 to your computer and use it in GitHub Desktop.
Promisified version of smtp-server
require! {
'promise-once-events'
'smtp-server'
}
const SERVER_PORT = 25
module.exports = class smtp-server-as-promised extends promise-once-events
(@options = {}) ->
{
@backlog = 0
@host
@port = SERVER_PORT
} = @options
@address = {}
options = {} <<< @options <<< do
onConnect: (session, ack) ~>
@emit 'connect', session, ack
onMailFrom: (address, session, ack) ~>
@emit 'mailFrom', address, session, ack
onRcptTo: (address, session, ack) ~>
@emit 'rcptTo', address, session, ack
onData: (stream, session, ack) ~>
@emit 'data', stream, session, ack
onClose: (session) ~>
@emit 'close', session
@server = new smtp-server.SMTPServer options
listen: (done) ->
new Promise (resolve, reject) ~>
rejector = (err) ~>
reject err
@server.once 'error', rejector
@server.listen @port, @host, @backlog, ~>
@server.removeListener 'error', rejector
@address = @server.server.address!
resolve!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment