Почему я должен использовать Nodemailer для отправки электронных писем?
8 мая 2022 г.Создатели Nodemail говорят, что это делает отправку электронной почты просто куском пирога.
Давайте посмотрим, говорят ли они о готовке или еде 🙂 Идея этой статьи состоит в том, чтобы объяснить, как использовать Nodemailer для отправки электронной почты.
Мы сосредоточимся в основном на аспектах SMTP и HTML, но также сделаем обзор всех возможностей Nodemailer. Кроме того, это руководство поможет вам подготовить и протестировать сообщения электронной почты для отправки с помощью приложения Node.js.
Как использовать Nodemailer
Установка
Единственное, что требуется, чтобы начать использовать Nodemailer, — это Node.js версии 6.0 или выше.
Вам также следует установить сам Nodemailer, но это очень легко сделать с помощью менеджера пакетов npm или Yarn. Выполните следующую команду в командной строке Node.js:
npm установить nodemailer
или
пряжа добавить nodemailer
После завершения включите его в свое приложение следующим образом:
var nodemailer = требуется('nodemailer');
или это, если вы используете модули ES:
импортировать nodemailer из ‘nodemailer’;
Отправка сообщений
Чтобы отправить сообщение с помощью Nodemailer, необходимо выполнить три основных шага.
Шаг 1. Создайте транспортер Nodemailer
SMTP — самый распространенный транспортер, и ниже мы опишем его более подробно, а также продемонстрируем несколько примеров. Но есть список других доступных вариантов:
- Встроенные транспорты.
- sendmail, обычная команда sendmail для простых сообщений. Это похоже на функцию mail() в PHP.
- SES, чтобы обрабатывать большой трафик электронной почты, отправляя их с помощью Amazon SES.
- поток, буфер для целей тестирования, для возврата сообщений.
- Внешний транспорт. Проще говоря, вы можете создать свой собственный способ транспортировки.
Дополнительные сведения см. в документации Nodemailer.
С SMTP все довольно просто. Установите хост, порт, данные и метод аутентификации, и все.
На этом этапе также полезно проверить правильность SMTP-подключения: **добавьте проверку (обратный вызов) **вызов для проверки подключения и аутентификации.
```javascript
Transporter.verify (функция (ошибка, успех) {
если (ошибка) {
console.log(ошибка);
} еще {
console.log('Сервер готов принимать наши сообщения');
Как тестировать электронные письма в Nodemailer?
Чтобы протестировать электронные письма, отправленные с помощью Nodemailer, мы будем использовать Mailtrap, онлайн-инструмент для комплексного тестирования электронной почты в тестовой среде.
Быстро зарегистрируйтесь (это бесплатно), перейдите на вкладку Настройки SMTP в папке "Входящие", скопируйте необходимые настройки и вставьте их в скрипт своего приложения.
Mailtrap предлагает готовую интеграцию с Nodemailer; выберите его в разделе Интеграция и вставьте в код приложения. Он уже содержит атрибуты транспортера и синтаксиса:
```javascript
вар транспорт = nodemailer.createTransport({
хост: "smtp.mailtrap.io",
порт: 2525,
авторизация: {
пользователь: "1a2b3c4d5e6f7g", // создано Mailtrap
проход: "1a2b3c4d5e6f7g" // сгенерирован Mailtrap
В противном случае вы можете использовать автоматически сгенерированные тестовые учетные записи электронной почты на Ethereal, который также является поддельным SMTP-сервисом, в основном предназначенным для пользователей Nodemailer.
Недавно Nodemailer представил NodemailerApp. Он обеспечивает замену Sendmail, но в первую очередь предназначен для отладки электронных писем. NodemailerApp имеет локальные серверы SMTP и POP3, универсальный почтовый домен, а также возможности предварительного просмотра электронной почты.
Шаг 2. Установите параметры сообщения Nodemailer
На этом этапе мы должны указать отправителя, получателей сообщения и содержание нашего сообщения.
Помните, что поддерживается Unicode, поэтому вы также можете использовать смайлики!
Чтобы отправить текст в формате HTML, никаких дополнительных атрибутов не требуется, просто поместите текст HTML в сообщение с атрибутом HTML. Для расширенных шаблонов вы можете добавлять вложения и вставлять изображения. Давайте сначала рассмотрим этот пример простых параметров сообщения:
```javascript
вар mailOptions = {
from: '"Пример команды" from@example.com',
кому: 'user1@example.com, user2@example.com',
subject: 'Хороший тест Nodemailer',
text: 'Привет, это наше первое сообщение, отправленное с помощью Nodemailer ;) ',
html: 'Привет!
Это наше первое сообщение, отправленное с помощью Nodemailer'
Вложения в Nodemailer
Вы можете добавлять различные типы данных в свое сообщение в Nodemailer, используя следующие основные свойства:
- имя файла: имя вложенного файла. Здесь вы также можете использовать Unicode.
- содержание: тело вашего вложения. Это может быть строка, буфер или поток.
- путь: путь к файлу для его потоковой передачи вместо включения в сообщение. Это хороший вариант для больших вложений.
- href: URL вложения. URI данных также поддерживаются.
```javascript
список: {
// Список-помощь: admin@example.com?subject=help
помощь: 'admin@example.com?subject=help',
// Список-отписка: http://example.com (комментарий)
отписаться: [
URL: 'http://example.com/unsubscribe',
comment: 'Короткое примечание об этом URL'
'отписаться@example.com'
// Идентификатор списка: "comment"
я бы: {
URL: 'mylist.example.com',
комментарий: 'мой новый список'
Дополнительные свойства позволяют добавлять определенные типы контента или встроенные изображения.
contentType: если вы его не установите, он будет выведен из свойства имени файла.
```javascript
` // Массив вложений
вложения: [
// Строковое вложение
имя файла: 'notes.txt',
содержание: «новые важные заметки»,
contentType: 'text/plain' // необязательный, определяется по имени файла
`
CID: встроенные изображения в сообщении HTML. Подробнее о прикреплении изображений к электронным письмам в формате HTML читайте в этом посте. Обратите внимание, что значение CID должно быть уникальным.
```javascript
cid: 'note@example.com' // должен быть как можно более уникальным
// Вложение файлового потока
имя файла: 'matrix neo.gif',
путь: __dirname + '/assets/neo.gif',
cid: 'neo@example.com' // должен быть как можно более уникальным
Кодировка: можно добавить к строковому типу контента. Он будет кодировать содержимое в тип буфера в соответствии с установленным вами значением кодировки (base64, двоичный файл и т. д.).
```javascript
` // Прикрепление двоичного буфера
имя файла: 'image.png',
содержимое: Buffer.from(
'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAABlBMVEUAAAD/' +
'//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U' +
'g9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC',
'base64'
Шаг 3. Доставьте сообщение с помощью sendMail()
Создав транспортер и настроив сообщение, мы можем отправить его с помощью *sendMail()*метода:
```javascript
transport.sendMail(mailOptions, (ошибка, информация) => {
если (ошибка) {
вернуть console.log(ошибка);
console.log('Сообщение отправлено: %s', info.messageId);
Возможности Nodemailer
Мы рассмотрели информацию о том, как создать и отправить электронное письмо в Nodemailer через SMTP, поэкспериментировав с различными типами контента: HTML, таблицами, списками, вложениями и встроенными изображениями. Что хорошо в Nodemailer, так это то, что он предлагает множество различных опций и настроек, поэтому вы можете настроить каждую часть своей электронной почты.
Ранее опубликовано здесь
Оригинал