2017-04-12 49 views
0

我正在开发我的第一个快速项目。我使用的是Nodemailer,它发送的电子邮件很好,但我没有得到回应。任何见解?这是我用来发送电子邮件的功能。它控制台日志消息发送很好,但似乎没有回应。Nodemailer未发送回复

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);  

       });  


     });  

    }  

} 

回答

0

您在res.sendStatus(200);之后缺少res.end()

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

看起来像一个伟大的建议,但我试了一下,没有任何改变。 –