Есть ли библиотека для NodeJS для отправки писем с вложением?
С наилучшими пожеланиями, sdepold
Есть ли библиотека для NodeJS для отправки писем с вложением?
С наилучшими пожеланиями, sdepold
Да, это довольно просто,
Я использую 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
- Юникод для использования любых символов
- Содержимое HTML, а также альтернатива обычного текста
- Приложения
- Встроенные изображения в HTML
- SSL (но не STARTTLS)
Лично я использую API поддержки Amazon SES или Sendgrid rest API, который является наиболее последовательным способом его выполнения.
Если вам нужен подход низкого уровня, используйте https://github.com/Marak/node_mailer и настройте собственный SMTP-сервер (или тот, у которого есть доступ)
Вы можете использовать nodejs-phpmailer
Вы также можете использовать библиотеку SES AwsSum Amazon:
Там есть операция SendEmail и SendRawEmail, последняя из которых может отправлять вложения через службу.
использовать почтовый пакет очень гибко и легко.
Другая альтернативная библиотека, которую нужно попробовать, - emailjs.
Я дал некоторые из предложений здесь, попробовав себя, но запущенный код жаловался, что send_mail() и sendMail() - это undefined (хотя я просто копировал и вставлял код с небольшими изменениями). Я использую node 0.12.4 и npm 2.10.1. У меня не было проблем с emailjs, которые просто отработали для меня полки. И у этого есть хорошая обертка вокруг вложений, так что вы можете прикрепить его различными способами по своему вкусу и легко, по сравнению с примерами nodemailer.
Nodemailer для любых потребностей почты nodejs. Это только лучшее на данный момент: D
Я не использовал его, но nodemailer (npm install nodemailer
) выглядит так, как вы хотите.
Отправить С помощью экспресс-почты (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!'
}
]
вы можете использовать официальный api для Google. Для этой цели они предоставили пакет для node. официальный google
Я прикрепил часть своего кода, который сделал для меня приложение для прикрепления
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;
}