Mailgun - неаутентифицированное письмо от guest.com - PullRequest
0 голосов
/ 29 июня 2018

У меня есть настройка mailgun в моем node.js с использованием nodemailer, и я не могу заставить его отправлять электронные письма, когда я проверяю свой маршрут, используя мой REST-клиент. Когда я напрямую записываю код в файл сервера, электронная почта отправляется сразу после запуска сервера.

Однако, когда я пишу API-адрес электронной почты в app.post и проверяю его с помощью REST-клиента, электронная почта перестает работать со стороны почтового пистолета и отклоняется google ??? Это только мое предположение из-за кода ошибки, которую я получаю.

Server response: 550 5.7.1 Unauthenticated email from guest.com is not 
accepted due to domain's 5.7.1 DMARC policy. Please contact the administrator 
of guest.com domain if 5.7.1 this was a legitimate mail. Please visit 5.7.1 
https://support.google.com/mail/answer/2451690 to learn about the 5.7.1 DMARC 
initiative. s12-v6si3013316qtg.362 - gsmtp

Я перешел по предоставленной ссылке и в документации написано, чтобы проверить с сервером домена. Я не понимаю, почему я получаю эту ошибку, потому что я уже аутентифицировал свою почту в mailgun.

Я также пытался перейти на прямое использование промежуточного программного обеспечения mailgun-js. Нашел три разных mailgun-js api с mailgun.com, mailgun-js на github и mailgun-js на npmjs.com. Получил ту же ошибку, что и выше.

В убыток. Не знаю, что делать.

Код моего нодмейлера:

const express = require('express');
const nodemailer = require('nodemailer');
const path = require('path');
const bodyParser = require('body-parser');    


const app = express();

const port = 3000;

app.use(bodyParser.json());

app.use(express.static(path.join(__dirname, 'dist')));       

app.post('/email', (req, res) => {
  let transporter = nodemailer.createTransport({
          host: 'smtp.mailgun.org',
          port: 587,
          secure: false, // true for 465, false for other ports
          auth: {
              user: 'postmaster@sandboxc8f2ecf64f364ca6ad740e658485c557.mailgun.org',
              pass: 'my API key here'
          },
          tls: {
            rejectUnauthorized: false
          }
      });

      // setup email data with unicode symbols
      let mailOptions = {
          from: req.body.from, // sender address
          to: 'cu0ngpitt@gmail.com', // list of receivers
          subject: 'Someone wrote you from your Online Resume!', // Subject line
          text: req.body.messge, // plain text body
      };

      // send mail with defined transport object
      transporter.sendMail(mailOptions, (error, info) => {
          if (error) {
              return console.log(error);
          }
          console.log('Message sent: %s', info.messageId);
          console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
      });
});

app.get('/', (req, res) => {
  res.send('Hello world');
});

app.listen(port, () => {
  console.log('Server running on port ' + port);
})

1 Ответ

0 голосов
/ 12 июля 2018

Mailgun ответил на мой билет и сказал, что из-за безопасности DMARC, мне разрешено отправлять только электронные письма с тем же доменом, что и моя учетная запись mailgun.

Так как у меня была бесплатная учетная запись почты. Мне пришлось изменить адрес отправителя на мой бесплатный почтовый адрес, который был postmaster @ sandbox "длинная строка" .mailgun.org

Если вы используете nodemailer, вы можете не указывать адрес электронной почты отправителя или ввести жесткий код.

Если вы используете mailgun-js, вы должны жестко закодировать его.

Мой старый код:

// setup email data with unicode symbols
      let mailOptions = {
          from: req.body.from, // sender address
          to: 'cu0ngpitt@gmail.com', // list of receivers
          subject: 'Someone wrote you from your Online Resume!', // Subject line
          text: req.body.messge, // plain text body
      };

Исправленный код:

// setup email data with unicode symbols
      let mailOptions = {
          postmaster@sandbox"some long string".mailgun.org, // sender address
          to: 'cu0ngpitt@gmail.com', // list of receivers
          subject: 'Someone wrote you from your Online Resume!', // Subject line
          text: req.body.messge, // plain text body
      };
...