Javascript 当使用脚本函数时,NodeEmailr transporter似乎会中断
我在这里遇到了一个nodemailer的情况,我正在构建一个联系表单,为了避免使用php,我试图在js上使用nodemailer,但是我发现了一个问题 当我在simples mailer.js上使用NodeEmailr并使用“node mailer.js”时,它可以工作:Javascript 当使用脚本函数时,NodeEmailr transporter似乎会中断,javascript,node.js,nodemailer,Javascript,Node.js,Nodemailer,我在这里遇到了一个nodemailer的情况,我正在构建一个联系表单,为了避免使用php,我试图在js上使用nodemailer,但是我发现了一个问题 当我在simples mailer.js上使用NodeEmailr并使用“node mailer.js”时,它可以工作: var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ service: 'gmail', aut
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'email',
pass: 'password'
}
});
var mailOptions = {
from: 'person',
to: 'email',
subject: 'Teste nodemailer',
text: `Teste`
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
但当我尝试在脚本中插入它以验证表单时:
async function sendIT(){
var email = document.getElementById('email').value;
var name = document.getElementById('name').value;
var msg= document.getElementById('msg').value;
var error = false;
if(name == ""){
document.getElementById('nameError').classList.add('error');
error = true;
}else{
document.getElementById('nameError').classList.remove('error');
}
if(msg == ""){
document.getElementById('msgError').classList.add('error');
error = true;
}else{
document.getElementById('msgError').classList.remove('error');
}
if (!(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email))){
document.getElementById('emailError').classList.add('error');
error = true;
}else{
document.getElementById('emailError').classList.remove('error');
}
if(!error){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'email',
pass: 'passwor'
}
});
var mailOptions = {
from: 'person',
to: email,
subject: 'Test nodemailer',
text: 'The ' +name+ ' sent the following message:\n\n\n' + msg
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
alert('e-mail failed')
console.log(error);
} else {
alert('E-mail sent');
console.log('Email sent: ' + info.response);
}
});
}
}
错误似乎出现在“transporter”上,因为当我创建transporter或尝试使用它发送电子邮件时,脚本会中断
有人知道为什么会这样吗?感谢您花时间阅读并回答此问题
编辑:
线路
脚本文件顶部给出了浏览器上的错误
uncaughtreferenceerror:require未定义
,这是一个由于我使用nodejs而不应该发生的错误。您所说的“它中断”是什么意思?你有错误吗?如果(!error)正在执行,您是否应该查看if语句,如果在if语句上方执行console.log(error)
,您会看到什么?使用“it breaks”,我的意思是,当脚本到达transporter创建时,它将无法继续。if语句起作用,console.log(error)
返回它应该返回的false
。因此,如果我理解正确,您的脚本似乎挂起了,并且在控制台中没有产生任何错误?否,但我只是使用浏览器控制台本身进行调试,它有一半的响应是无法读取未定义的的属性“createTransport”。这让我觉得脚本无法访问nodeEmailr,但是代码是相同的,我不明白为什么它会这样做。你正在使用var nodeEmailer=require('nodeEmailer')代码>在文件的顶部?
var nodemailer = require('nodemailer');