@barakuda1

Почему не доходит письмо nodemailer на nodejs?

Приветствую всех. Сначала пробовал yandex, письмо не доходит, ошибок никаких нет, в спаме также нет письма - везде пусто. В настройках почты включал IMAP, POP3 - везде все галочки.
Решил попробовать на Gmail, но письма также не доходят.
Пробовал и с указанием host, secure, port - безуспешно. Помогите разобраться :(

app.post('/api/send-email', (req, res) => {
    console.log(req.body);
    // process the form data and send a response

    res.pdfFromHTML({
        filename: 'document.pdf',
        htmlContent: '<h1>Hello World</h1>'
    }, () => {
        // Send email with attachment
        const transporter = nodemailer.createTransport({
            service: "Gmail",
            auth: {
                user: 'моя-почта@gmail.com',
                pass: 'пароль от почты'
            }
        });

        const mailOptions = {
            from: 'моя-почта@gmail.com',
            to: 'моя-почта@gmail.com',
            subject: 'PDF with Attachment',
            attachments: [{
                filename: 'document.pdf',
                path: './document.pdf'
            }]
        };

        transporter.sendMail(mailOptions, (error, info) => {
            if (error) {
                console.log(error);
            } else {
                console.log('Email sent: ' + info.response);
            }
        });
    });
});
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ответы на вопрос 1
@5465
Если у вас нет никаких ошибок в консоли, то проблема может быть связана с настройками безопасности вашей почты. Некоторые почтовые провайдеры, такие как Google и Yandex, могут блокировать доступ к вашей почте из-за низкого уровня безопасности. Для того чтобы разрешить отправку писем, вы можете настроить "доступ к устаревшим приложениям" в настройках вашей почты.

Для Gmail вам необходимо:

Перейдите на страницу "Безопасность" в вашей учетной записи Google.
Прокрутите вниз до раздела "Доступ к устаревшим приложениям" и нажмите на "Включить доступ".
Создайте пароль для приложения. В качестве имени приложения введите "Node.js", например.
Используйте новый пароль вместо вашего обычного пароля при отправке письма.
Если проблема не в этом, вы можете попробовать использовать другой сервис отправки писем, например, SendGrid или Mailgun. Также убедитесь, что вы правильно указали параметры для подключения к серверу, такие как порт и протокол (secure).

Пример кода для отправки письма через SendGrid:

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);

const msg = {
  to: 'получатель@почта.com',
  from: 'отправитель@почта.com',
  subject: 'Тема письма',
  text: 'Текст письма',
  html: '<p>HTML версия письма</p>',
};

sgMail.send(msg)
  .then(() => console.log('Письмо успешно отправлено'))
  .catch((error) => console.error(error));


Вам нужно установить библиотеку @sendgrid/mail через npm и создать API ключ в вашей учетной записи SendGrid. Затем вы можете использовать метод send для отправки письма с заданными параметрами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы