有没有适用于NodeJS的邮件发送附件库?
是的,很简单,我使用nodemailer:npm install nodemailer --save
var mailer = require('nodemailer');
mailer.SMTP = {
host: 'host.com',
port:587,
use_authentication: true,
user: 'you@example.com',
pass: 'xxxxxx'
};
然后读取一个文件并发送电子邮件:
fs.readFile("./attachment.txt", function (err, data) {
mailer.send_mail({
sender: 'sender@sender.com',
to: 'dest@dest.com',
subject: 'Attachment!',
body: 'mail content...',
attachments: [{'filename': 'attachment.txt', 'content': data}]
}), function(err, success) {
if (err) {
// Handle error
}
}
});
尝试使用nodemailer,例如尝试使用以下代码:
var nodemailer = require('nodemailer');
nodemailer.SMTP = {
host: 'mail.yourmail.com',
port: 25,
use_authentication: true,
user: 'info@youdomain.com',
pass: 'somepasswd'
};
var message = {
sender: "sender@domain.com",
to:'somemail@somedomain.com',
subject: '',
html: '<h1>test</h1>',
attachments: [
{
filename: "somepicture.jpg",
contents: new Buffer(data, 'base64'),
cid: cid
}
]
};
最后,发送消息
nodemailer.send_mail(message,
function(err) {
if (!err) {
console.log('Email send ...');
} else console.log(sys.inspect(err));
});
你尝试过Nodemailer吗?
Nodemailer支持:
- Unicode字符的使用
- HTML内容以及纯文本替代
- 附件
- 在HTML中嵌入图像
- SSL(但不支持STARTTLS)
您也可以使用AwsSum的Amazon SES库:
在其中,有一个名为SendEmail和SendRawEmail的操作,后者可以通过该服务发送附件。另一个可尝试的替代库是emailjs。
我自己尝试了这里的一些建议,但运行代码时出现send_mail()和sendMail()未定义的问题(即使我只是复制并粘贴了稍微修改过的代码)。我正在使用node 0.12.4和npm 2.10.1。我在emailjs方面没有任何问题,它对我来说就像开箱即用一样。并且它具有漂亮的附件包装器,因此您可以按照自己的喜好和轻松方式附加它,与此处的nodemailer示例相比更容易。
您可以使用nodejs-phpmailer
使用邮件包非常灵活和简单。
我没有使用过它,但nodemailer(npm install nodemailer
)看起来像是你想要的。
你可以使用谷歌的官方API来实现这个功能。 他们为此提供了Node的软件包。 谷歌官方API
我附上了我的代码的一部分,这是我用来实现附件功能的。
function makeBody(subject, message) {
var boundary = "__myapp__";
var nl = "\n";
var attach = new Buffer(fs.readFileSync(__dirname + "/../"+fileName)) .toString("base64");
// console.dir(attach);
var str = [
"MIME-Version: 1.0",
"Content-Transfer-Encoding: 7bit",
"to: " + receiverId,
"subject: " + subject,
"Content-Type: multipart/alternate; boundary=" + boundary + nl,
"--" + boundary,
"Content-Type: text/plain; charset=UTF-8",
"Content-Transfer-Encoding: 7bit" + nl,
message+ nl,
"--" + boundary,
"--" + boundary,
"Content-Type: Application/pdf; name=myPdf.pdf",
'Content-Disposition: attachment; filename=myPdf.pdf',
"Content-Transfer-Encoding: base64" + nl,
attach,
"--" + boundary + "--"
].join("\n");
var encodedMail = new Buffer(str).toString("base64").replace(/\+/g, '-').replace(/\//g, '_');
return encodedMail;
}
附言:感谢 himanshu 在这方面的深入研究