Отправка электронной почты с помощью Gmail SMTP: руководство с примерами кода

“Нет, поэтому заполните EMAIL_SERVER.env значениями для Gmail SMTP.”

Если вы работаете над проектом, который предполагает отправку электронных писем из вашего приложения, и используете SMTP-сервер Gmail, вам необходимо настроить необходимые значения в файле.env. В этой статье блога я расскажу вам о нескольких методах выполнения этой задачи, используя разговорный язык, и приведу примеры кода. Итак, приступим!

Метод 1: использование простого Node.js
Если вы используете Node.js для своего проекта, вы можете использовать библиотеку nodemailerдля отправки электронных писем через SMTP-сервер Gmail. Сначала убедитесь, что у вас установлен nodemailer, запустив npm install nodemailer. Затем в своем коде вы можете настроить передачу электронной почты, используя следующий фрагмент кода:

const nodemailer = require('nodemailer');
// Create a transport object
const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: process.env.EMAIL_USERNAME,
    pass: process.env.EMAIL_PASSWORD,
  },
});
// Send email
transporter.sendMail({
  from: 'your-email@gmail.com',
  to: 'recipient@example.com',
  subject: 'Hello from Node.js',
  text: 'This is the body of the email',
})
  .then(() => console.log('Email sent successfully'))
  .catch((error) => console.error('Error sending email:', error));

Обязательно замените process.env.EMAIL_USERNAMEи process.env.EMAIL_PASSWORDфактическими переменными среды, в которых хранятся ваше имя пользователя и пароль Gmail.

Метод 2: использование такой платформы, как Express.js
Если вы используете веб-фреймворк, такой как Express.js, вы можете использовать библиотеку nodemailerв сочетании с возможностями вашей платформы. Вот пример использования Express.js:

const express = require('express');
const nodemailer = require('nodemailer');
const app = express();
app.post('/send-email', (req, res) => {
  const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      user: process.env.EMAIL_USERNAME,
      pass: process.env.EMAIL_PASSWORD,
    },
  });
  transporter.sendMail({
    from: 'your-email@gmail.com',
    to: 'recipient@example.com',
    subject: 'Hello from Express.js',
    text: 'This is the body of the email',
  })
    .then(() => res.send('Email sent successfully'))
    .catch((error) => res.status(500).send(`Error sending email: ${error}`));
});
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

В этом примере устанавливается сервер Express.js с конечной точкой /send-email. Когда к этой конечной точке отправляется POST-запрос, она отправляет электронное письмо с использованием SMTP-сервера Gmail. Опять же, обязательно замените process.env.EMAIL_USERNAMEи process.env.EMAIL_PASSWORDфактическими переменными среды.

Метод 3: использование сторонней библиотеки
В качестве альтернативы вы можете использовать стороннюю библиотеку, которая упрощает процесс отправки электронной почты, например emailjs. Вот пример использования emailjsс Node.js:

const emailjs = require('emailjs');
const server = emailjs.server.connect({
  user: process.env.EMAIL_USERNAME,
  password: process.env.EMAIL_PASSWORD,
  host: 'smtp.gmail.com',
  ssl: true,
});
server.send({
  from: 'your-email@gmail.com',
  to: 'recipient@example.com',
  subject: 'Hello from emailjs',
  text: 'This is the body of the email',
}, (error, message) => {
  if (error) {
    console.error('Error sending email:', error);
  } else {
    console.log('Email sent successfully');
  }
});

В этом примере мы используем библиотеку emailjsдля подключения к SMTP-серверу Gmail и отправки электронного письма. Замените process.env.EMAIL_USERNAMEи process.env.EMAIL_PASSWORDсобственными переменными среды.