Javascript 在gmail中使用nodeEmailer

Javascript 在gmail中使用nodeEmailer,javascript,node.js,nodemailer,Javascript,Node.js,Nodemailer,我一直在阅读多个论坛,花了好几个小时试图让我的Nodemailer应用程序工作,但它根本不工作。我采纳了那些能够让他们工作的人的建议,但结果对我来说仍然是一样的。我在下面发布了一个错误,每当我试图在我创建的表单上发送POST请求时,我都会收到这个错误 更新: 我已经设法让代码链接到电子邮件,但现在我无法将数据输入到联系人表单中提交到电子邮件。我有点新,所以如果我听起来没有经验,我是。我很感激你的耐心。以下是当前代码: app.post('/contact',urlencodedParser,(r

我一直在阅读多个论坛,花了好几个小时试图让我的Nodemailer应用程序工作,但它根本不工作。我采纳了那些能够让他们工作的人的建议,但结果对我来说仍然是一样的。我在下面发布了一个错误,每当我试图在我创建的表单上发送POST请求时,我都会收到这个错误

更新:

我已经设法让代码链接到电子邮件,但现在我无法将数据输入到联系人表单中提交到电子邮件。我有点新,所以如果我听起来没有经验,我是。我很感激你的耐心。以下是当前代码:

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')

})

app.post('/contact',urlencodedParser,(req,res)=>{
常量输出=`
您有一个新的联系请求

联系方式
  • 名称:${req.body.Name}
  • 电子邮件:${req.body.Email}
  • 消息:${req.body.Message}
`; 异步函数main(){ 让transporter=nodeEmailer.createTransport({ 主机:“smtp.gmail.com”, 港口:465, 安全:是的, 认证:{ 用户:'ME@EMAIL.COM', 通过:process.env.PASSWORD }, }); //使用定义的传输对象发送邮件 let info=wait transporter.sendMail({ 发件人:req.body.email,//发件人地址 至:me@email.com“,//接收者列表 主题:“你好✔", // 主题行 html:`${req.body.message}`//html body }); console.log(“发送的消息:%s”,info.messageId); log(“预览URL:%s”,nodeEmailer.getTestMessageUrl(info)); } main().catch(console.error); res.render('contact') })
这只是一个忘记密码控制器,它向用户发送密码邮件。 emailConfig.js

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

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

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}</pre><br/>
                                  <pre>Cheers, OpenBox Team</pre>`
                          }
                          transporter.sendMail(mailOptions,(mailerr,info)=> {
                              if(mailerr){
                                res.status(400).json("Unable to send email");
                              }else{
                                res.status(201).json(info);
                              }
                          })
var transporter=nodeEmailer.createTransport({
服务:nodeEmailerConfig.service,
认证:{
用户:nodeEmailerConfig.email,
密码:nodeEmailerConfig.password
}
});
常量邮件选项={
发件人:nodeEmailerConfig.email,
发送至:req.body.email,
主题:“忘记密码”,
html:`Hi${req.body.email}


您的密码是${randomPassword}
干杯,OpenBox团队` } transporter.sendMail(mailpoptions,(mailerr,info)=>{ if(mailerr){ res.status(400).json(“无法发送电子邮件”); }否则{ res.status(201).json(info); } })

请确保您在gmail中打开了不安全的电子邮件设置,否则大部分时间邮件将被拒绝或放入垃圾邮件箱。

“而且根本不起作用”:请编辑您的问题,更准确地解释它不起作用的原因。您是否收到错误消息,确切地说是哪一条(请复制/粘贴)如果没有,什么不起作用?此外,Gmail拒绝包含不可信链接和主机名的邮件。我用收到的错误更新了我的帖子。