在Node.js中发送电子邮件?[关闭]


291

我最近开始编程我的第一个node.js。但是,我发现我无法创建直接发送到我的电子邮件的“联系我”表单,因为我无法从节点中找到能够发送电子邮件的模块。

有人知道node.js电子邮件库或示例联系表单脚本吗?


结帐: 适用于ec2应用程序的AWS-SES免费62000电子邮件。
哈维

Answers:


142

node-email-templates是一个更好的选择:https : //github.com/niftylettuce/node-email-templates

它也支持Windows


1
这确实有助于文档进行自我解释。
NycCompSci 2010年


7
那就是因为它的nodemailer.com现在我正在我的项目中使用它,所以工作正常,nodejitsu通过gmail的smtp服务器发送邮件没有问题。
jascha

2
在过去的两天里,我花了几个小时来尝试起床node-email-templates和跑步。我只想将其用作初始化的对象,然后再用于发送。无法正常工作。放弃。
jcollum 2014年

教程被证明是有价值的(Nodejs Gamil OAuth2)masashi-k.blogspot.com.au/2013/06/…–
eddyparkinson

162

Nodemailer基本上是一个模块,使您能够在Node.js中进行编程时轻松发送电子邮件。http://www.nodemailer.com/上有一些很好的示例,说明了如何使用Nodemailer模块。此链接中包含有关如何安装和使用Nodemailer基本功能的完整说明。

我个人在使用npm安装Nodemailer时遇到了麻烦,因此我只是下载了源代码。有关npm安装和下载源的说明。

这是一个非常简单的模块,我会推荐给想要使用Node.js发送电子邮件的任何人。祝好运!


2
首先,nodemailer工作了!
Capy 2013年

通过SMTP和Amazon SES对其进行了测试,为我工作,并将其集成到ConnectedSets框架中
Jean Vincent

简单,无需费劲进行设置。刚刚复制了示例代码,更改为我的信息(有关SSL安全的信息),它就可以正常工作。非常适合简单的电子邮件发件人!

现在它是一个商业项目,因此请注意。
elliotrock

2
该答案应包括一个示例
Abraham TS

65

看看emailjs

在浪费大量时间试图使nodemailer处理大型附件后,从那时起发现emailjs并感到高兴。

它支持使用普通的File对象发送文件,而不是nodemailer要求的大缓冲区。意味着您可以将其链接到fe,从而将附件从html表单传递到邮件程序。它还支持排队。

总而言之,不知道为什么nodejitsu ppl选择nodemailer作为其版本的基础,emailjs才更加先进。


3
长时间使用后,必须进行分叉以解决问题:除非在邮件发送过程中,否则该事物将不会处理套接字事件,因此在空闲一段时间后会停顿,因为服务器会关闭连接,但是在那里没有什么可以处理事件并重置内部变量。您可以在这里找到分叉的版本:https : //github.com/silvioster/emailjs。这个版本已经稳定运行了很长时间了,没有停顿。
silvio

18
更新到以前的评论,原始作者也修复了该错误和其他一些错误,因此不再需要fork。最新版本应该在https://github.com/eleith/emailjs
silvio,

1
nodemailer还支持附件流,不仅支持“巨大的缓冲区”
JoshuaDavid

57

使用nodemailer模块发送电子邮件的完整代码

var mailer = require("nodemailer");

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "gmail_id@gmail.com",
        pass: "gmail_password"
    }
});

var mail = {
    from: "Yashwant Chavan <from@gmail.com>",
    to: "to@gmail.com",
    subject: "Send Email Using Node.js",
    text: "Node.js New world for me",
    html: "<b>Node.js New world for me</b>"
}

smtpTransport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    smtpTransport.close();
});

4
我发现Nodemailer 方法比容易使用node-email-templates。也许是因为我只是想发送基本的纯文本/基本的html电子邮件,但是我发现node-email-templates需要更多的设置方式,而Nodemailer实际上是在2分钟内就启动并运行了。
JVG

4
除了gmail吗?我们如何为自己的smtp服务器配置?
Balaji Boggaram Ramanarayan 2015年

1
使用webpack编译后出现此错误: TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail。我去了像帖子这个,然后这个页面,但还是输了。
user1063287

2
@ user1063287只是删除了“SMTP”参数
博扬Radivojevic轰炸机

1
请注意,您不能将“发件人”地址从您自己的电子邮件地址更改为用于身份验证的电子邮件地址。Gmail会将发件人地址强制为该地址,以便可以确认发件人的权限。
Nicholas Mordecai

25

@JimBastard接受的答案似乎是过时的,我看了一下,发现邮寄库在7个月内没有被使用过,列出了多个错误,并且不再在npm中注册。

nodemailer当然看起来是最好的选择,但是此线程上其他答案中提供的URL都是404。

nodemailer声称支持gmail,hotmail等的简单插件,并且还具有非常漂亮的文档。


9

您可以始终使用AlphaMail公开说明:我是其背后的开发人员之一)。

只需使用NPM安装:

npm install alphamail

注册一个AlphaMail帐户。获取令牌,然后您就可以开始使用AlphaMail服务发送邮件了。

var alphamail = require('alphamail');

var emailService = new alphamail.EmailService()
    .setServiceUrl('http://api.amail.io/v1/')
    .setApiToken('YOUR-ACCOUNT-API-TOKEN-HERE');

var person = {
    id: 1234,
    userName: "jdoe75",
    name: {
        first: "John",
        last: "Doe"
    },
    dateOfBirth: 1975
};

emailService.queue(new alphamail.EmailMessagePayload()
    .setProjectId(12345) // ID of your AlphaMail project (determines template, options, etc)
    .setSender(new alphamail.EmailContact("Sender Company Name", "from@example.com"))
    .setReceiver(new alphamail.EmailContact("John Doe", "to@example.org"))
    .setBodyObject(person) // Any serializable object
);

在AlphaMail GUI(仪表板)中,您可以使用发送的数据编辑模板:

<html>
    <body>
        <b>Name:</b> <# payload.name.last " " payload.name.first #><br>
        <b>Date of Birth:</b> <# payload.dateOfBirth #><br>

        <# if (payload.id != null) { #>
            <a href="http://company.com/sign-up">Sign Up Free!</a>
        <# } else { #>
            <a href="http://company.com/login?username=<# urlencode(payload.userName) #>">Sign In</a>
        <# } #>
    </body>
</html>

模板是用Comlang编写的,这是一种专门为电子邮件设计的简单模板语言。


12
Alphamail现在正式死亡。非常不幸-正是由于这篇文章,我才开始使用它。祝开发商在下一次创业中一切顺利。
masotime 2014年



3

npm有一些软件包,但尚未达到1.0。最佳选择npm list mail

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

Campaign是用于在Node中发送电子邮件的全面解决方案,它带有一个非常简单的API。

您是这样实例的。

var client = require('campaign')({
  from: 'you@gmail.com'
});

要发送电子邮件,您可以使用Mandrill,它既免费又很棒。只需设置您的API密钥,如下所示:

process.env.MANDRILL_APIKEY = '<your api key>';

(如果您想使用其他提供商发送电子邮件,请检查文档)

然后,当您要发送电子邮件时,可以这样操作:

client.sendString('<p>{{something}}</p>', {
  to: ['someone@gmail.com', 'someone.else@gmail.com'],
  subject: 'Some Subject',
  preview': 'The first line',
  something: 'this is what replaces that thing in the template'
}, done);

GitHub仓库有相当丰富的文档

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.