Отправка электронной почты через nodemailer nodejs

Сначала я проверяю электронную почту, присутствующую в базе данных, если она присутствует, она сгенерирует хэш-код, а после этого обновит базу данных, и как только хэш-код будет сгенерирован, электронная почта будет отправлена ​​пользователю. Итак, я застрял, как отправить электронное письмо, пожалуйста, помогите.

    const md5 = require('md5');
    let transporter = require("../config/transporter");
    
    export const newemail = async(req,res ) => {
    try{
        var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        const user = await db.findOne('USER', { email: req.body.email });
        res.status(200).json(user);
    
        if (!re.test(req.body.email)) {
            res.json('Email address is not valid!');
        } else {
            const email = req.body.email;
            const name = email.substring(0, email.lastIndexOf("@"));
            const domain = email.substring(email.lastIndexOf("@") +1);
            const hashCode = md5(name + domain);
            function sendingMail(referredBy){
          
            const user = await db.findOneandUpdate('USER', { email: req.body.email, referralCode: hashCode, referredBy: referredBy }); 
          const email = user.email;
          console.info(email + "email");
               //send verification mail

               let mailOptions = {
                from: '[email protected]', // sender address
                to: email, // list of receivers
                subject: settingsConfig.subjectLine, // Subject line
                text: settingsConfig.message, // plaintext body
                html: settingConfig.message // html body
            };
            console.info("MAILING!");
        console.info(mailOptions)
        // send mail with defined transport object
        transporter.sendMail(mailOptions, function (error, info) {
            if (error) {
                return console.info(error);
            }
            console.info('Message sent: ' + info.response);
        });
         };

    }
}
       catch (err) {
        console.info(err)
        res.status(500).json({ message: "Something went wrong" });
    }

}

Пожалуйста, кто-нибудь, как двигаться дальше.

🤔 А знаете ли вы, что...
Node.js используется в IoT (интернете вещей) для управления устройствами и сбора данных.


1
23
1

Ответ:

Решено

const md5 = require('md5');
let transporter = require("../config/transporter");


export const sendEmail = async (to, from, subject, body) => {
    // use any mailer library to send the email
}

export const isValidEmail = async (email) => {
    const regex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return regex.test(email);
}

export const findUserByEmail = async (email) => {
    // db instance
    return await db.findOne('USER', { email });
}

export const generateHash = async (email) => {
    const name = email.substring(0, email.lastIndexOf("@"));
    const domain = email.substring(email.lastIndexOf("@") +1);
    return md5(name + domain);
}



export const verifyAndEmail = async(req,res ) => {
try{
    // var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    // const user = await db.findOne('USER', { email: req.body.email });
    // res.status(200).json(user);
    // step-1 destructure email from request body
    const {
        email
    } = req.body;

    // step-2, validate the email id
    const isEmailValid = await isValidEmail(email);

    if (!isEmailValid) {
        throw new Error('Invalid email');
        // return appropiate response
    }

    // step-3 find a user by email
    const user = await findUserByEmail(email);

    // step-4 validate, if user does not exists
    if (!user) {
        throw new Error('User does not exist');
        // return appropiate response
    }

    //step-5 generate the hash using user's email
    const hash = await generateHash(email);

    // step-6, call send email method with the parameters
    }
       catch (err) {
        console.info(err)
        res.status(500).json({ message: "Something went wrong" });
    }

}
I would suggest, you should refactor your code to following. 

Run it and let me know if you face any issues. 


This approach will help you to debug the error.