Html 使用NodeEmailer发送电子邮件时出错
server.js: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
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实例的正文解析器?如果是这样的话,您是否可以编辑您的问题,以便在您这样做的地方包含这段额外的代码?