Bonjour,

J'ai un problème lors de l'envoie de mail, je débute dans nuxtjs et le problème est que le mail s'envoie a chaque chargement de page

<script>
import nodemailer from "nodemailer";

var transporter = nodemailer.createTransport({
    host: "serveur",
    port: 587,
    auth: {
        user: "user",
        pass: "mdp",
    },
});

const mailOptions = {
    from: "user",
    to: "user",
    subject: "hello",
    html: "<h1>Recrutement</h1><p>Voici le texte dans un paragraph pour l'email de test</p>",
};
await transporter.sendMail(mailOptions);
</script>

Ce que je veux

Quand on clique sur Envoyer, il envoie le mail

Ce que j'obtiens

A chaque chargement de page il envoie un mail!

5 réponses


Bonsoir,
as-tu essayé de mettre ton envoi de mail dans une fonction et d’appeler ta fonction avec un @click sur ton bouton ?

eckop
Auteur
<template>
    <form
        class="grid grid-flow-col grid-rows-1 grid-cols-1 md:grid-rows-1 md:grid-cols-2"
        name="recrutement"
    >
        <p class="block w-2/4 col-start-1">
            <label for="nom" class="font-bold px-auto">Nom</label>
            <input type="text" name="nom" class="border border-pink-200 my-2 w-2/4" />
        </p>
        <p class="col-start-2">
            <label for="prenom" class="font-bold">Prénom</label>
            <input type="text" name="prenom" class="border border-pink-200 my-2" />
        </p>
        <p class="col-start-1">
            <label for="tel" class="font-bold">Téléphone</label>
            <input type="text" name="tel" class="border border-pink-200 my-2" />
        </p>
        <p class="col-start-2">
            <label for="mail" class="font-bold">Mail</label>
            <input type="text" name="mail" class="border border-pink-200 my-2" />
        </p>
        <p class="col-start-1">
            <label for="cv" class="font-bold">CV</label>
            <input type="text" name="cv" class="border border-pink-200 my-2" />
        </p>
        <p class="col-start-2">
            <label for="lettremotivation" class="font-bold"
                >Lettre de motivation</label
            >
            <input
                type="text"
                name="lettremotivation"
                class="border border-pink-200 my-2"
            />
        </p>
        <button
            type="submit"
            @click.prevent="sendMail"
            class="font-bold col-span-2 col-start-1"
        >
            Envoyer
        </button>
    </form>
</template>

<script>
import nodemailer from "nodemailer";

function sendMail() {
    var transporter = nodemailer.createTransport({
        host: "server",
        port: 587,
        auth: {
            user: "user",
            pass: "pass",
        },
    });
    var mailOptions = {
        from: "user",
        to: "user",
        subject: "hello",
        html: "<h1>Recrutement</h1><p>Voici le texte dans un paragraph pour l'email de test</p>",
    };
    transporter.sendMail(mailOptions, function (error, info) {
        if (error) {
            console.log("sendmail" + error);
        } else {
            console.log("Email sent: " + info.response);
        }
    });
}
</script>

Ca ne fonctionne toujours pas ...

Hello, tu as un message d'erreur dans la console?

eckop
Auteur

util.js:109 Uncaught TypeError: Cannot read properties of undefined (reading 'NODE_DEBUG')
at node_modules/util/util.js (util.js:109:17)
at require2 (chunk-SB6M622P.js?v=42b18667:30:50)
at node_modules/nodemailer/lib/shared/index.js (index.js:6:14)
at __require2 (chunk-SB6M622P.js?v=42b18667:30:50)
at node_modules/nodemailer/lib/mailer/index.js (index.js:4:16)
at
require2 (chunk-SB6M622P.js?v=42b18667:30:50)
at node_modules/nodemailer/lib/nodemailer.js (nodemailer.js:3:16)
at __require2 (chunk-SB6M622P.js?v=42b18667:30:50)
at dep:nodemailer:1:16

j'ai ca en message d'erreur

Mmmmh okay tu peux entourer la creation du transporter avec des console.log et pareil pour chaque étape du js pour voir à quel moment cette erreur tombe, apparemment il manque un paramètre :/