Использование Nodemailer с Gmail - PullRequest
2 голосов
/ 17 мая 2019

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

UPDATE: !!

Мне удалось получить код для связи с электронной почтой, но теперь я не могу получить данные, введенные в контактную форму, для отправки на электронную почту. Я немного новичок, поэтому, если я звучу неопытно, я. Я ценю терпение. Вот текущий код:

app.post('/contact',urlencodedParser,(req,res)=>{
    const output= `
    <p>You have a new contact request</p>
    <h3>Contact Details</h3>
    <ul>
         <li> Name:${req.body.name}</li>
         <li> Email:${req.body.email}</li>
        <li> Message:${req.body.message}</li>

    </ul>

    `;

    async function main(){



    let transporter = nodemailer.createTransport({
        host: 'smtp.gmail.com',
        port: 465,
        secure: true,

        auth: {
            user:'ME@EMAIL.COM',
            pass: process.env.PASSWORD

        },

    });

    // send mail with defined transport object
    let info = await transporter.sendMail({
      from: req.body.email, // sender address
      to: "me@email.com", // list of receivers
      subject: "Hello ✔", // Subject line
       html: `${req.body.message}` // html body
    });

    console.log("Message sent: %s", info.messageId);

    console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));

  }

  main().catch(console.error);


res.render('contact')

})

1 Ответ

1 голос
/ 17 мая 2019

Это просто контроллер забытого пароля, который отправляет пользователю пароль по почте.emailConfig.js

var email = "xxxx@gmail.com";
const password = "xxxxxx";
const service = "gmail";

module.exports = {
  service: service,
  email: email,
  password: password
}

Controller.js

<code>var transporter = nodemailer.createTransport({
    service : nodeMailerConfig.service,
    auth :{
        user : nodeMailerConfig.email,
        pass : nodeMailerConfig.password
    }
});
    const mailOptions = {
                          from: nodeMailerConfig.email,
                          to: req.body.email,
                          subject: "Forgot Password",
                          html: `<p>Hi ${req.body.email}</p> <br/>
                                  <pre>Your password is ${randomPassword}
Cheers, OpenBox Team
`} transporter.sendMail (mailOptions, (mailerr, info) => {if (mailerr) {res.status (400) .json (« Невозможно отправить электронное письмо »);} else {res.status (201).json (info);}})

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

...