使用html5验证表单后,输入提交的onclick事件是什么?问题:nodemailer

iklwldmw  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(333)

我创建了一个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函数。有没有更好的方法来实现这一点?谢谢

tvokkenx

tvokkenx1#

您可以使用的事件是 onsubmit 表单中的html事件属性。那以后呢 name="form_contato" 放置 onsubmit="Enviar()" .
w3在这里有更多信息,如果您需要的话,请点击Submit html事件。然后,您需要的任何验证器都可以放在enviar()函数中,或者如果您使每个验证都成为自己的函数,则可以单独调用。
还有其他方法,如监视状态和在窗口中设置全局状态,但我不确定是否涉及其他因素?根据您提供的代码,这将符合您的目的。我希望这是有帮助的。如果你有任何问题,请告诉我。快乐编码!

相关问题