Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用NodeEmailer发送电子邮件时出错_Html_Node.js_Express_Undefined_Nodemailer - Fatal编程技术网

Html 使用NodeEmailer发送电子邮件时出错

Html 使用NodeEmailer发送电子邮件时出错,html,node.js,express,undefined,nodemailer,Html,Node.js,Express,Undefined,Nodemailer,server.js: app.post('/game',(请求、恢复、下一步)=>{ //如果(!emailValidator(请求正文电子邮件)){ //我会做电子邮件验证客户端,但如果你 //想做服务器端发送一些html说电子邮件是无效的吗 //res.sendFile(invalidEmail.html) //} //否则{ //我想你有一些发送电子邮件的脚本。我会使用nodemailer,因为这是第一个 //我找到的模块 让寄件人myemail@gmail.com' 让transport

server.js:

app.post('/game',(请求、恢复、下一步)=>{
//如果(!emailValidator(请求正文电子邮件)){
//我会做电子邮件验证客户端,但如果你
//想做服务器端发送一些html说电子邮件是无效的吗
//res.sendFile(invalidEmail.html)
//}
//否则{
//我想你有一些发送电子邮件的脚本。我会使用nodemailer,因为这是第一个
//我找到的模块
让寄件人myemail@gmail.com'
让transporter=nodeEmailer.createTransport({
服务:'gmail',
认证:{
用户:发件人,
密码:'Mypassword'
}
})
让邮件选项={
发件人:发件人:,
发送至:req.body.email,
主题:“新注册”,
文字:“感谢订阅”
}
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
//做点什么
console.log(错误)
}
否则{
console.log('已发送新用户电子邮件')
请求下一个()
}
})
}
//}
)
index.html:


我有一个错误:

TypeError: Cannot read property 'email' of undefined
所以我的代码有一个错误,我试图用HTML格式的表单发送一封带有nodeEmailer的电子邮件,有人能帮我解决这个问题吗


还有一部分用于电子邮件验证,但我删除了它,因为它说“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 = 'example@gmail.com' // 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}`)
})
const express=require('express'))
const app=express()
const path=require('路径')
const bodyParser=require('body-parser')
const nodemailer=require('nodemailer')
use(bodyParser.urlencoded({extended:false}));
app.use('/public',express.static(path.join('public'));
应用程序获取(“/”,(请求,请求)=>{
res.sendFile(path.join(uuu dirname,'public','index.html'))
});
app.post(“/game”,(请求、回复)=>{
让senderUsername='0example@gmail.com“//发件人电子邮件地址
让senderPassword='password';//发件人密码
const transporter=nodemailer.createTransport({
服务:“Gmail”,
认证:{
用户:senderUsername,
密码:senderPassword
}
});
常量邮件选项={
发件人:senderUsername,//发件人地址
收件人:req.body.email,//收件人列表
主题:'新注册',//主题行
html:“谢谢订阅。

”//纯文本正文 }; transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误) console.log(错误) 否则{ console.log('已发送新用户电子邮件') 控制台日志(信息); 请求下一个() } }); }) 常数端口=5000; 应用程序侦听(端口,()=>{ log(`server running on PORT${PORT}`) })
注: 在使用google帐户时,您可能还需要遵循以下步骤

启用设置以允许您正在使用的Gmail帐户使用不太安全的应用程序。 以下是链接:

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


您还可以浏览MailJet或SendGrid以发送电子邮件。

您是否配置了Express实例的正文解析器?如果是这样的话,您是否可以编辑您的问题,以便在您这样做的地方包含这段额外的代码?