Giter VIP home page Giter VIP logo

node-email's Introduction

node-email

A simple wrapper for the sendmail command

Build Status

Installation

First make sure Sendmail is installed.

then either

npm install email

or

git clone git://github.com/aheckmann/node-email.git

Examples

var Email = require('email').Email
var myMsg = new Email(
{ from: "[email protected]"
, to:   "[email protected]"
, subject: "Knock knock..."
, body: "Who's there?"
})

// if callback is provided, errors will be passed into it
// else errors will be thrown
myMsg.send(function(err){ ... })

In this example we set the global from property so that all email is sent from the same address.

var lib = require('email')
  , Email = lib.Email;
    
lib.from = '[email protected]'

// no need to set the from property, already set
var mail = new Email(
{ to: "[email protected]"
, subject: "Knock knock..."
, body: "Who's there?"
})
mail.send()

Note that no callback was passed into send(), therefore errors will throw.

Options

new Email(config)

config options:

  • to {array|string}
    • Email address(es) to which this msg will be sent
  • from {string}
    • Email address from which this msg is sent. If not set defaults to the exports.from global setting.
  • replyTo {string}
    • Email address to which replies will be sent. If not set defaults to from
  • cc {array|string}
    • Email address(es) who receive a copy
  • bcc {array|string}
    • Email address(es) who receive a blind copy
  • subject {string}
    • The subject of the email
  • body {string}
    • The message of the email
  • bodyType {string}
    • Content type of body. Only valid option is 'html' (for now). Defaults to text/plain.
  • altText {string}
    • If bodyType is set to 'html', this will be sent as the text alternative.
  • timeout {number}
    • Duration in milliseconds to wait before killing the process. If not set, defaults to exports.timeout global setting.
  • path {string}
    • Optional path to the sendmail executable

Global settings

  • exports.timeout {number}
    • Duration in milliseconds to wait before killing the process. Defaults to 3000. Used when timeout is not set on a message.
  • exports.from {string}
    • Email address from which messages are sent. Used when from was not set on a message.

Injection

Some protection against injection attacks is enabled. Use at your own risk. Or better yet, fork it and submit something better!

Node version

Compatible with v0.1.92+ See the node compatibility page for working with earlier node versions.

License

(The MIT License)

Copyright (c) 2011 Aaron Heckmann

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

node-email's People

Contributors

aheckmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-email's Issues

How can I prevent double quotes from being quoted?

I've noticed that the content of body is automatically quote-escaped.

Like.. If I send following email

var Email = require('email').Email
var myMsg = new Email(
{ from: "[email protected]",
to:   "[email protected]"
, subject: "Knock knock..."
, body: "Who's there? \"quote test\""
})

I will receive an email like

Who's there? \"quote test\"

So it looks like node-email is doing unnecessary(?) escaping of the double quotes. How can I prevent this?

Body shouldn't be mandatory

email.js:146

You should remove the check on the body being not empty. You should be able to send emails without body (it's a common practice, especially among Blackberry users).

Thanks for the library, works great!

path should be global conf, same as from

In the current version, you have to pass sendmail path to the constructor.
Since this is a thing you do once and expect it to work, it should be done the same way as from - by setting lib.path which then gets inherited into every Email instance.

Also, the error you get when spawn can;t find sendmail is rather cryptic:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: write EPIPE
    at errnoException (net.js:901:11)
    at Object.afterWrite (net.js:718:19)
DEBUG: Program node app.js exited with code 8

feature request

Hi!

Couldn't you make sendmail configurable (via this.sendmail, say) in cmd getter? The rationale is to allow for custom sendmail installations, when sendmail binary is not placed under $PATH

TIA,
--Vladimir

spawn is not defined

Whats the reason for

Uncaught TypeError: spawn is not a function

error?
Thanks

no password?

I noticed that we don't need to config the password of our email. sure?

Does it work with postfix?

I have postfix setup for forwarding emails through GMail but node-email doesn't seem to work with postfix. Or is there a way?

... out of date ?

I get errors with node 0.4 > . e.g.

TypeError: Object # has no method 'setSecure'
at Client.secure (/usr/local/lib/node/.npm/mail/0.1.1/package/lib/mail/index.js:256:10)
at Client. (/usr/local/lib/node/.npm/mail/0.1.1/package/lib/mail/index.js:233:18)

Offer

Aaron, I very like the sintax of your node-email.
But when I send email, I get letters with bad RFC.

Also it would really nice if you add attachements and html possibility.

At the moment I do framework on base Ext Core may I use your work in it.
I want do like this

Ext.Mail({
email:'[email protected]',
from:'[email protected]'
title:'Title message',
html:html,
attachements:????
}).send();

Maybe you will help me?

My work is here https://github.com/mycoding/Ext-Core-for-NodeJS

Does it work with postfix?

I have postfix setup for forwarding emails through GMail but node-email doesn't seem to work with postfix. Or is there a way?

Email from not set from configuration

I'm using the latest email module in npmjs.org.

I'm using the first example on your first page. I've tried on both Mac OSX and Linux hosts. In both cases, the "from" field is being ignored and the email is coming from [email protected]

Am I missing something? Is my sendmail misconfigured?

Characters getting lost in the shuffle...

Not sure if this is an issue this this library or with UNIX mail but passing in the following as a plain text body removes characters:

Original:

CREATE VIEW v_town AS SELECT boundaries.gid, boundaries.city, boundaries.mcd, boundaries.navigation, boundaries.the_geom FROM boundaries WHERE (((boundaries.mcd)::text = 'T1'::text) OR ((boundaries.mcd)::text = 'T2'::text));

After Sending:

CREATE VIEW v_town AS SELECT boundaries.gid, boundaries.city, boundaries.mcd, boundaries.navigation, boundaries.the_geom FROM boundaries WHERE (((boundaries.mcd)::text =1'::text) OR ((boundaries.mcd)::text =2'::text));

Notice how 'T is missing from the second

headers

Hi!

Please, make all header be SMTP compliant, i.e. containing at least one space after colon. So far To:[email protected] leads to loss of recipients (since sendmail -t relies on To: headers)

TIA,
--Vladimir

Streams!

  1. I want to stream the body of a message, rather than making it a string.
  2. I want to stream attachments to a message by just hooking up a FileReadStream.

Maybe the email message object could be a Stream object, and just alias the end() function to send() for coolness.

What do you think of this for an API shape?

var email = new Email()
email.from = "[email protected]"
email.to = "[email protected]"
email.subject = "Dja Get That Thing I Sentcha?"

// email object is a write stream, so pipe/sys.pump to it
// whatever gets pumped in is the message body.
fs.createReadStream("message-body").pipe(email)

// attachment stream
var txtAttachment = email.attachment()
txtAttachment.mimeType = "text/plain"
txtAttachment.name = "some-file.txt"
fs.createReadStream("some-file.txt").pipe(txtAttachment)

// or maybe something like this?
var att = email.attach({"type":"image/png", "filename":"image.png")
fs.createReadStream("image.png", att)

// or, even infer the name and type and set up the stream for me:
email.attach("image.png")

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.