添付ファイル付きのメールを送信するためのNodeJSのライブラリはありますか?
はい、それはかなり簡単です、私はnodemailerを使用します:npm install nodemailer --save
var mailer = require('nodemailer');
mailer.SMTP = {
Host: 'Host.com',
port:587,
use_authentication: true,
user: '[email protected]',
pass: 'xxxxxx'
};
次に、ファイルを読み取ってメールを送信します。
fs.readFile("./attachment.txt", function (err, data) {
mailer.send_mail({
sender: '[email protected]',
to: '[email protected]',
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: '[email protected]',
pass: 'somepasswd'
};
var message = {
sender: "[email protected]",
to:'[email protected]',
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は除く)
個人的に私は Amazon SES REST APIまたは Sendgrid REST APIを使用していますが、これは最も一貫した方法です。
低レベルのアプローチが必要な場合は https://github.com/Marak/node_mailer を使用し、独自のSMTPサーバー(またはアクセス権のあるサーバー)をセットアップします
非常に柔軟で簡単なメーラーパッケージを使用します。
AwsSumのAmazon SESライブラリを使用することもできます。
そこではSendEmailとSendRawEmailと呼ばれる操作があり、後者はサービスを介して添付ファイルを送信できます。
試す別の代替ライブラリは emailjs です。
私はここでいくつかの提案を試してみましたが、コードを実行すると、send_mail()とsendMail()が未定義であると不平を言われました(コードを少しコピーして貼り付けただけですが)。ノード0.12.4とnpm 2.10.1を使用しています。私はemailjsには問題がなく、すぐに使えるようになりました。そして、添付ファイルの周りに素敵なラッパーがあるので、ここのnodemailerの例と比較して、好みに応じてさまざまな方法で簡単に添付できます。
nodejs-phpmailer を使用できます
エクスプレスメーラーで送信( https://www.npmjs.com/package/express-mailer )
送信PDF->
var pdf="data:application/pdf;base64,JVBERi0xLjM..etc"
attachments: [ { filename: 'archive.pdf',
contents: new Buffer(pdf.replace(/^data:application\/(pdf);base64,/,''), 'base64')
}
]
画像を送信->
var img = 'data:image/jpeg;base64,/9j/4AAQ...etc'
attachments: [
{
filename: 'myImage.jpg',
contents: new Buffer(img.replace(/^data:image\/(png|gif|jpeg);base64,/,''), 'base64')
}
]
Txtを送信->
attachments: [
{
filename: 'Hello.txt',
contents: 'hello world!'
}
]
Nodejsメールに必要なNodemailer。現時点で最高です:D
これにはgoogleの公式APIを使用できます。彼らはこの目的のためにノードのパッケージを提供しています。 Google公式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;
}
追伸: himansh についての熱心な研究に感謝
[email protected]
の最新バージョンでは回答が更新されていません
ここで更新された例:
const fs = require('fs')
const path = require('path')
const nodemailer = require('nodemailer')
const transport = nodemailer.createTransport({
Host: 'smtp.libero.it',
port: 465,
secure: true,
auth: {
user: '[email protected]',
pass: 'HelloWorld'
}
})
fs.readFile(path.join(__dirname, 'test22.csv'), function (err, data) {
transport.sendMail({
from: '[email protected]',
to: '[email protected]',
subject: 'Attachment',
text: 'mail content...', // or body: field
attachments: [{ filename: 'attachment.txt', content: data }]
}, function (err, success) {
if (err) {
// Handle error
console.log(err)
return
}
console.log({ success })
})
})
私はそれを使用していませんが、nodemailer(npm install nodemailer
)はあなたが望むもののように見えます。