Отправка E-mail¶
Для отправки E-mail в Node.js приложениях используется npm модуль nodemailer
.
1 |
|
Разработчики модуля nodemailer сделали все, чтобы его использование в Node.js было как можно более простым. Рассмотрим пример.
nodemailer.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
В первую очередь необходимо создать так называемый transporter
, который хранит всю конфигурацию SMTP. Для создания transporter
используется метод createTransport()
, который принимает объект со следующими полями:
host
- адрес почтового сервера, который будет отправлять посылаемые e-mail;port
- порт почтового сервера, по умолчанию может быть25
,465
или587
;secure
- булевое значение, задаетсяtrue
, если используется SSL, в таком случае значением port должно быть465
;auth
- объект со свойствамиuser
иpass
, в которых указывается логин и пароль используемого почтового аккаунта соответственно.
В случае отсутствия реального аккаунта в процессе разработки можно использовать тестовый почтовый аккаунт ethereal
, входящий в модуль nodemailer
. Аккаунт создается вызовом метода createTestAccount()
, который возвращает логин и пароль для доступа к аккаунту.
Для отправки сообщения через аккаунт сервиса Gmail, методу createTransport()
необходимо передать такую конфигурацию.
1 2 3 4 5 6 7 |
|
Сама отправка e-mail осуществляется вызовом метода sendMail()
у объекта transporter
. Метод sendMail()
принимает объект со следующей структурой:
from
- email адрес отправителя сообщения, дополнительно может быть указано имя (см. пример);to
- адрес получателя, через запятую или в виде массива можно указать множество получателей;subject
- тема сообщения;text
- текст сообщения;html
- текст сообщения в формате HTML;attachments
- прикрепленные к сообщению файлы.
Рассмотрим пример отправки e-mail с файлами.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
Файлы отправляются массивом в свойстве attachments
. Каждый элемент массива описывает один файл объектом следующей структуры:
filename
- имя файла в сообщении;content
- содержимое файла;path
- путь к файлу, который будет передан потоком, его именем будет значение, указанное вfilename
;href
- путь к файлу, который будет вложен в сообщение;contentType
- тип содержимого файла;contentDisposition
;encoding
- кодировка содержимого файла;raw
- задание файла в “сыром” формате.