使用 Nodemailer 发送电子邮件时出错

法式面条

服务器.js:

app.post('/game',(req,res,next)=>{
    //if(!emailValidator(req.body.email)){
      // I would do email validations client side to but if you
      // want to do server side send some html saying the email is invalid
      //res.sendFile(invalidEmail.html)
    //}
    //else{
      //I assume you have some script for sending email. I'll use nodemailer cuz its the first
      //module I found
      let sender = '[email protected]'
      let transporter = nodemailer.createTransport({
        service:'gmail',
        auth:{
          user:sender,
          pass:'Mypassword'
        }
      })
      let mailOptions = {
        from: sender,
        to: req.body.email,
        subject:'New sign up',
        text:'Thanks for subscribing'
      }
      transporter.sendMail(mailOptions,function(error,info){
        if(error){
          // do somehting
          console.log(error)
        }
        else{
          console.log('Sent new user email')
          req.next()
        }
      })
    }
    //}
    )

索引.html:

<form action="game" method="post" size="30">
    <input type="text" name="email"/>
    <input type="submit" />
</form>

我有这个错误:

TypeError: Cannot read property 'email' of undefined

所以我的代码有这个错误,我试图从 HTML 表单发送一封带有 Nodemailer 的电子邮件,有人可以帮我解决这个问题吗?

还有一个用于电子邮件验证的部分,但我删除了它,因为它说“emailValidator”未定义。

苏雷什·芒斯

在主文件夹中,创建一个公共文件夹,在里面创建一个 index.html 文件

<!DOCTYPE html>
<html>

<head>
    <title>Simple page</title>
</head>

<body>
   <form action="game" method="post" size="30">
        <input type="text" name="email"/>
        <input type="submit" />
    </form>
</body>

</html>

在主文件夹中,创建一个 server.js 文件

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


app.use(bodyParser.urlencoded({ extended: false }));

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

app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'public', 'index.html'))
});


app.post('/game', (req, res) => {
    let senderUsername = '[email protected]' // sender email address
    let senderPassword = 'password'; // senders password

    const transporter = nodemailer.createTransport({
         service: 'Gmail',
         auth: {
                user: senderUsername,
                pass: senderPassword
            }
        });

        const mailOptions = {
          from: senderUsername, // sender address
          to: req.body.email, // list of receivers
          subject: 'New sign up', // Subject line
          html: '<p>Thanks for subscribing.</p>'// plain text body
        };

        transporter.sendMail(mailOptions, function (err, info) {
           if(err)
             console.log(err)
           else {
            console.log('Sent new user email')
            console.log(info);
            req.next() 
           }
    });
})

const PORT = 5000;

app.listen(PORT, ()=>{
    console.log(`server running on PORT ${PORT}`)
})

注意:您可能还需要在使用 Google 帐户时执行这些步骤。

启用设置以允许您使用的 Gmail 帐户的安全性较低的应用程序。这是链接:谷歌不太安全的应用程序

允许访问“显示解锁验证码选项”(允许访问您的 Google 帐户)这是链接:Google 解锁验证码

您还可以探索 MailJet 或 SendGrid 来发送电子邮件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用nodemailer发送电子邮件时出错

通过Office365 smtp使用nodemailer发送电子邮件时出错(MEANjs支架)

使用nodemailer发送电子邮件

使用nodemailer发送电子邮件

发布JSON以使用Nodemailer发送电子邮件以发送邮件但挂起或抛出错误

使用Angular和NodeMailer发送电子邮件

如何使用keystone-nodemailer发送电子邮件

如何使用 nodemailer 和 gmail 发送电子邮件?

无法使用 nodemailer 在 nodejs 中发送电子邮件

无法使用 nodemailer 和 Outlook 发送电子邮件

使用Nodemailer和GoDaddy托管的电子邮件发送电子邮件

使用nodemailer发送AMP电子邮件

使用Namecheap电子邮件发送Nodemailer电子邮件

使用邮政MVC发送电子邮件时出错?

使用Mandrill(php)发送电子邮件时出错

如何使用 Nodemailer 使用我的公司域发送电子邮件?

使用nodemailer通过Node.js发送电子邮件不起作用

使用nodemailer发送电子邮件,并将表单数据插入mysql数据库

使用OAuth2和nodemailer从我的Gmail帐户发送电子邮件

使用Lambda,NodeJ和Nodemailer发送电子邮件不起作用

使用Nodemailer发送邮件时出错

无法从nodemailer发送电子邮件

从nodemailer发送电子邮件给nodejs

在nodemailer应用程序中使用通过发送电子邮件发送sendgrid会出现以下错误?

使用nodemailer一次发送多封电子邮件

如何使用nodemailer和电子邮件模板发送消息?

无法使用 nodemailer 发送带有附件的电子邮件

我想在node js中使用nodemailer发送电子邮件附件。我正在使用elasticemail gate方式

尝试使用 nodemailer 使用 gmail 发送电子邮件并收到错误消息:“无法为用户创建新的访问令牌”