Tengo algunos datos de formulario en uno de mis componentes de Vue que quiero pasar a mi secuencia de comandos de Nodemailer para que los datos puedan enviarse como un correo electrónico. Estoy tratando de usar Axios para hacer esto.
¡Sin embargo, no sucede nada ya que en realidad no sé lo que estoy haciendo!
El script de Nodemailer que configuré funciona cuando ejecuto el archivo en la línea de comandos. Lo que necesito es que se ejecute cuando se envíe el formulario en mi componente Vue.js.
Aquí está mi script de Nodemailer:
"use strict"; const nodemailer = require("nodemailer"); require('dotenv').config(); // async..await is not allowed in global scope, must use a wrapper async function main() { // create reusable transporter object using the default SMTP transport let transporter = nodemailer.createTransport({ host: "smtp.gmail.com", port: 465, secure: true, // true for 465, false for other ports auth: { user: process.env.user, // generated ethereal user pass: process.env.password, // generated ethereal password }, }); // send mail with defined transport object let info = await transporter.sendMail({ from: process.env.user, // sender address to: process.env.email, // list of receivers subject: 'Translation Suggestion', // Subject line text: "Hello world?", // plain text body html: "<p>Traditional: <br> Simplified: <br> Pinyin: <br> English: " }); console.log("Message sent: %s", info.messageId); // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com> // Preview only available when sending through an Ethereal account console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info)); // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou... } main().catch(console.error);Y la función a la que se llama para enviar en mi componente de formulario:
<button type="submit" @click="sendEmail" class="form__btn">Suggest</button> sendEmail () { axios.post("localhost:3000/send-translation-suggest-email", () => { this.traditional, this.simplified, this.pinyin, this.english }) }Para crear una REST-API con express.js , primero inicialice un proyecto node.js ( npm init [-y] ). Luego instala express.js ( npm install express ).
Cuando tenga su configuración, puede crear un archivo index.js , el servidor. En él, tendrás que adaptar el contenido del ejemplo express Hello World , para que la ruta que acepte no sea GET / sino POST /send-translation-suggest-email . Luego, asegúrese de que su servidor escuche el puerto 3000 (como especificó en el código del lado del cliente).
En el oyente de POST /send-translation-suggest-email , puede llamar al método main desde su otro archivo (asegúrese de importar el archivo correctamente, con la sintaxis require de node.js ).
Luego, puede llamar al servidor backend desde el frontend como desee.