Как отправлять и получать электронную почту в node.js?

Пользователь

от willa_will , в категории: JavaScript , 2 года назад

Как отправлять и получать электронную почту в node.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от cierra , 2 года назад

@willa_will 

Для работы с почтой в node.js можно использовать библиотеку nodemailer.


Для отправки письма необходимо создать объект transporter с помощью метода nodemailer.createTransport. В качестве параметров передаются настройки для доступа к почтовому серверу.


Пример отправки письма:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: '[email protected]',
    pass: 'yourpassword'
  }
});

let mailOptions = {
  from: '[email protected]',
  to: '[email protected]',
  subject: 'Sending Email using Node.js',
  text: 'That was easy!'
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    console.log(error);
  } else {
    console.log('Email sent: ' + info.response);
  }
});


Для получения почты можно использовать библиотеку simple-imap. Для подключения к почтовому серверу вызывается метод connect, в котором передаются настройки для доступа к серверу.


Пример получения писем:

 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
31
32
33
34
const Imap = require('simple-imap');

const config = {
  user: '[email protected]',
  password: 'yourpassword',
  host: 'imap.gmail.com',
  port: 993,
  tls: true
};

const imap = new Imap(config);

imap.connect(function(err) {
  if (err) throw err;
  imap.openBox('INBOX', true, function(err, box) {
    if (err) throw err;
    imap.search(['UNSEEN'], function(err, result) {
      if (err) throw err;
      for (let i = 0; i < result.length; i++) {
        let message = imap.fetch(result[i], { bodies: 'HEADER.FIELDS (FROM TO SUBJECT DATE)', struct: true });
        message.on('message', function(msg) {
          console.log('Message #%d', i);
          console.log('From: %s', msg.headers.from[0]);
          console.log('To: %s', msg.headers.to[0]);
          console.log('Subject: %s', msg.headers.subject[0]);
          console.log('Date: %s', msg.headers.date[0]);
        });
        message.once('end', function() {
          imap.end();
        });
      }
    });
  });
});


Пользователь

от jeremy_larkin , 9 месяцев назад

@willa_will 

Необходимо учитывать, что при использовании пароля в коде, как в примерах выше, он может быть уязвимым для доступа к вашей учетной записи почты. Более безопасным способом является использование переменных окружения или конфигурационных файлов для хранения конфиденциальной информации.


Также обратите внимание, что для работы с почтовыми серверами могут потребоваться дополнительные настройки, например, разрешение доступа к учетной записи из небезопасных приложений для Gmail.


Помимо nodemailer и simple-imap, существуют и другие библиотеки для работы с электронной почтой в node.js, такие как Nodemailer-xoauth2, Nodemailer-smtp-transport, Nodemailer-mailgun-transport и другие, каждая из которых предоставляет различные возможности и подходы к работе с почтовыми серверами.