The email
package allows sending email from a Meteor app. To use it, add the
package to your project by running in your terminal:
meteor add email
The server reads from the MAIL_URL
environment variable to determine how to
send mail. The MAIL_URL
should reference an
SMTP server and
use the form smtp://USERNAME:PASSWORD@HOST:PORT
or
smtps://USERNAME:PASSWORD@HOST:PORT
. The smtps://
form (the s
is for
“secure”) should be used if the mail server requires TLS/SSL (and does not use
STARTTLS
) and is most common on port 465. Connections which start unencrypted
prior to being upgraded to TLS/SSL (using STARTTLS
) typically use port 587
(and sometimes 25) and should use smtp://
. For more information see the
Nodemailer docs
If MAIL_URL
is not set, Email.send
outputs the message to standard output
instead.
Send an email. Throws an Error
on failure to contact mail server
or if mail server returns an error. All fields should match
RFC5322 specification.
If the MAIL_URL
environment variable is set, actually sends the email.
Otherwise, prints the contents of the email to standard out.
Note that this package is based on mailcomposer 4, so make sure to refer to
the documentation
for that version when using the attachments
or mailComposer
options.
Options
- from String
-
"From:" address (required)
- to, cc, bcc, replyTo String or Array of Strings
-
"To:", "Cc:", "Bcc:", and "Reply-To:" addresses
- inReplyTo String
-
Message-ID this message is replying to
- references String or Array of Strings
-
Array (or space-separated string) of Message-IDs to refer to
- messageId String
-
Message-ID for this message; otherwise, will be set to a random value
- subject String
-
"Subject:" line
- text, html String
-
Mail body (in plain text and/or HTML)
- watchHtml String
-
Mail body in HTML specific for Apple Watch
- icalEvent String
-
iCalendar event attachment
- headers Object
-
Dictionary of custom headers - e.g.
{ "header name": "header value" }
. To set an object under a header name, useJSON.stringify
- e.g.{ "header name": JSON.stringify({ tracking: { level: 'full' } }) }
. - attachments Array of Objects
-
Array of attachment objects, as described in the mailcomposer documentation.
- mailComposer MailComposer
-
A MailComposer object representing the message to be sent. Overrides all other options. You can create a
MailComposer
object vianew EmailInternals.NpmModules.mailcomposer.module
.
You must provide the from
option and at least one of to
, cc
, and bcc
;
all other options are optional.
Email.send
only works on the server. Here is an example of how a
client could use a server method call to send an email. (In an actual
application, you’d need to be careful to limit the emails that a
client could send, to prevent your server from being used as a relay
by spammers.)
// Server: Define a method that the client can call.
Meteor.methods({
sendEmail(to, from, subject, text) {
// Make sure that all arguments are strings.
check([to, from, subject, text], [String]);
// Let other method calls from the same client start running, without
// waiting for the email sending to complete.
this.unblock();
Email.send({ to, from, subject, text });
}
});
// Client: Asynchronously send an email.
Meteor.call(
'sendEmail',
'Alice <alice@example.com>',
'bob@example.com',
'Hello from Meteor!',
'This is a test of Email.send.'
);