2017-04-12 1 views
0

Je travaille sur mon premier projet express. J'utilise Nodemailer et j'envoie des emails très bien mais je ne reçois pas de réponse. Des idées? Voici la fonction que j'utilise pour envoyer les emails. La console enregistre le message envoyé correctement, mais ne semble pas répondre.Nodemailer n'envoie pas de réponse

exports.email = function(req, res, options, tokens) { 
    receiver_id= options.email.receiver_id; 
    message= options.email.message; 
    sender_email = options.email.sender_email; 
    sender_name = options.email.sender_name; 
    slug=options.info.slug; 
    org_name=options.info.org_name; 
    dir_url=options.info.dir_url;  

    var https = require('https'); 
    str = ''; 
    //getting user email by id  

    path = '/api/v1/people/' + receiver_id +'?__proto__=&access_token=' + tokens[slug]; 
    var options = { 
     host: slug + '.nationbuilder.com', 
     path: path, 
     method: "GET", 
     json: true, 
     headers: { 
      "content-type": "application/json", 
      "accept": "application/json" 
     }, 
    }  

    var nb_req = https.get(options, req_callback);  

    function req_callback(response, res) {  

     response.on('data', function(chunk) { 
      str += chunk; 
     });  

     response.on('end', function() { 
      object = JSON.parse(str); 
      receiver_email = object.person.email1; 
      var nodemailer = require('nodemailer');  

      var transporter = nodemailer.createTransport({ 
        port:465, 
        host:"smtp.gmail.com", 
        auth: { 
         user: '[email protected]', // Your email id 
         pass: '69$6FK$b6PQu' // Your password 
        } 
       });  

       var html = '<p>From: ' + sender_email + '<br>'; 
       html += 'To: ' + receiver_email + '</p>'; 
       html += "<p>"+message + "</p>" 
       html += "<p>This message was delivered by the " + org_name + " alumni directory website, " + "<a href='" + dir_url 
       + "'>" + dir_url + "</p>"; 



       var mailOptions = { 
        from: '[email protected]', // sender address 
        to: '[email protected]', // list of receivers 
        subject: "A message from " + sender_name, // Subject line 
        /*text: "Message sent to", // plaintext body*/ 
        html: html 
       };  

       transporter.sendMail(mailOptions, function(error, info){ 
        if(error){ 
         console.log(error); 
         res.json({yo: 'error'}); 
        }else{ 
         console.log('Message sent: ' + info.response); 
         res.sendStatus(200); 
        }; 
        return res.sendStatus(200);  

       });  


     });  

    }  

} 

Répondre

0

Il vous manque res.end() après res.sendStatus(200);.

transporter.sendMail(mailOptions, function(error, info){ 
    if (error){ 
    console.log(error); 
    res.json({yo: 'error'}); 
    res.sendStatus(500); 
    }else{ 
    console.log('Message sent: ' + info.response); 
    res.sendStatus(200); 
    }; 
    return res.end(); 
}) ; 
+0

Cela semble être une excellente suggestion, mais j'ai essayé et rien n'a changé. –