【问题标题】:Nodemailer with Gmail带有 Gmail 的 Nodemailer
【发布时间】:2019-03-06 07:14:37
【问题描述】:

我正在尝试使用 Nodemailer 和 Gmail 为我的网站实现联系表单,但不幸的是出了点问题。我找不到问题。以下是我的发帖路线:

app.post('/form', cors(), (req, res, next) => {

    let transporter = nodemailer.createTransport({
        host: 'smtp.gmail.com',
        port: 465,
        secure: true,
        auth: {
            user: 'some.mail@gmail.com',
            pass: 'password'
        },
        tls: {
            rejectUnauthorized: false
        }
    });

    const htmlEmail = `
        <h3>Contact Details</h3>
        <ul>
            <li>Name: ${req.body.author}</li>
        </ul>
        <h3>Message:</h3>
        <p>${req.body.body}</p>
    `

    let mailOptions = {
        from: req.body.author,
        to: 'some@mail.com',
        replyTo: req.body.author,
        subject: "Portfolio Website - Contact",
        text: req.body.body,
        html: htmlEmail
    };

    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            console.log(error);
            return res.json({err: error});
        }
        console.log('Message sent: %s', info.messageId);
        res.redirect('form');
    });
});

这是我的 HTML 表单:

<form method="POST" action="form" accept-charset=utf-8>
    <div class="form-group">
      <textarea name="body" placeholder="Write an e-mail here..." class="form-control"></textarea>
    </div>
    <div class="form-group">
      <input type="text" name="author" placeholder="Author" class="form-control author" />
    </div>
    <div class="form-group">    
      <input class="btn btn-lg btn-secondary btn-block" type="submit" value="Send" />
    </div>
  </form>

如有任何帮助,我将不胜感激!

干杯, 西门

PS。这是 GitHub 上的 repo 的链接: https://github.com/alojzz/alojzz.github.io/blob/master/server.js

【问题讨论】:

  • 试试这个。在使用 Nodemailer 时。您将收到一封电子邮件,说明您正在使用的 gmail 帐户上的安全性较低的应用程序。在此邮件中为此/不太安全的应用启用访问权限

标签: javascript html node.js gmail nodemailer


【解决方案1】:

我遇到了同样的问题,我将我的 Google 帐户安全性中的“不太安全的应用程序访问”更改为“开启”。这解决了我的问题。

【讨论】:

  • 谢谢你的回答,但是我之前试过了,还是不行,所以问题肯定不一样。
  • 不确定,但在您的表单标签中,操作不应该是这个'/form'?
  • 动作看起来不错,尝试从 sn-p 输出代码中按send,您将看到Requested URL: /form
  • 也许smtp 端口不是465 而是587?你能试试吗?每天还有 99 封电子邮件的限制,请确保您没有通过。
  • 还是一样。我改变了端口并添加了 res.send('form'); - 没有。单击表单中的“发送”按钮后仍然出现错误:找不到文件
猜你喜欢
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
相关资源
最近更新 更多