我创建了一个email.js模块来示例化NodeEmailer。通过运行node email.js(代码中已经填写了to、for、subject和text),我可以正常地使用gmail发送/接收电子邮件。目前,我正试图使用表单中的提交输入来触发nodemailer(nodemailer现在需要访问站点上填写的输入值并通过电子邮件发送)。我无法通过将onclick=“send()”分配给表单的提交输入来实现这一点。
html:
<section class="sec-form">
<form name="form_contato" method="post" id="form-block">
<h1 id="contato">Contato</h1>
<input type="text" id="nomeid" placeholder="Seu nome" name="nome" required/>
<input type="email" id="emailid" placeholder="E-mail" name="email" required/>
<input type="text" id="assuntoid" placeholder="Assunto"/>
<textarea id="mensagemid" placeholder="Deixe sua mensagem..." rows="6" maxlength="1300" required></textarea>
<input type="submit" id="enviar" value="Enviar" onclick="Enviar()"/>
</form>
</section>
js:
const dotenv = require('dotenv').config();
const nodemailer = require("nodemailer");
const express = require('express');
const app = express();
const port = 5500;
app.listen(port, () => {
console.log(`Listening at http://localhost:${port}`)
});
//Input submit onclick
function Enviar() {
let nome = document.getElementById('nomeid');
let email = document.getElementById('emailid');
let assunto = document.getElementById('assuntoid');
let mensagem = document.getElementById('mensagemid');
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
type: "login",
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASS,
},
});
let mailOptions = {
from: 'services.mail.sender@gmail.com',
to: 'luciano.rocha.dev@gmail.com',
subject: 'Static Resp Web - Nodemailer',
text:
`Nome: ${nome.value},
E-mail: ${email.value},
Assunto: ${assunto.value},
Mensagem: ${mensagem.value}`
//attachments: [ { filename: , path: , contentType: , } ]
};
transporter.sendMail(mailOptions, function (err, data) {
if (err) {
console.log("Error " + err);
} else {
alert(`Obrigado ${nome.value}, sua mensagem foi enviada com sucesso!`)
console.log("E-mail enviado com sucesso.");
}
});
}
我正在vs代码上使用live server。我没有找到除了onclick之外的其他状态,用于在正确填写所有表单后提交工作的时间(html5验证)。我的想法是使用这个状态来触发nodemailer函数。有没有更好的方法来实现这一点?谢谢
1条答案
按热度按时间tvokkenx1#
您可以使用的事件是
onsubmit
表单中的html事件属性。那以后呢name="form_contato"
放置onsubmit="Enviar()"
.w3在这里有更多信息,如果您需要的话,请点击Submit html事件。然后,您需要的任何验证器都可以放在enviar()函数中,或者如果您使每个验证都成为自己的函数,则可以单独调用。
还有其他方法,如监视状态和在窗口中设置全局状态,但我不确定是否涉及其他因素?根据您提供的代码,这将符合您的目的。我希望这是有帮助的。如果你有任何问题,请告诉我。快乐编码!