Отправка 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- задание файла в “сыром” формате.