2017-05-22 123 views
1

我想导出一个使用Sendgrid发送电子邮件的函数。我创建了一个我创建这个函数的外部文件。数据(用作参数的凭证)我放在其他文件中,我也将其导入。模块导出功能

我没有收到任何错误,但电子邮件根本没有发送。

SEND_MAIL:

module.exports = { 

     'sendMail': function(subject, sender_email, email, link, username, template){  
     var request = sg.emptyRequest(); 
      request.body = { 
       subject: subject, 
       from: { 
       email: sender_email 
       }, 
       personalizations: [ 
        { 
         to: [{      
         email: email 
         }], 
         substitutions: { 
         '[link]' : link, 
         '[email]' : email, 
         '[username]': username 
         }     
        } 
       ], 
       template_id: template 
      }; 

     request.method = "POST"; 
     request.path = "/v3/mail/send";  
     return sg.API(request).then(function (response) { 
      console.log(response);     
      }).catch(function(err){console.log(err.response.body.errors);}); 
    } 
}; 

主文件(其中我导入功能):

var config = require('../config/config.json'); 
    var utils= require('../service/utils'); 
    var api_key = config.sendgrid.key; 
    var sg = require('sendgrid')(api_key); 

    ..... 


    function(new_user){ 

       var template = utils.new_account_template; 
       var sender_email= utils.new_account_email; 
       var link  = utils.new_account_link; 
       var subject  = utils.new_account_subject; 
       var email  = new_user.email; 
       var username = new_user.username; 

       var utilemail = require('../service/utilemail')(subject, sender_email, email, link, username, template); 
       utilemail.sendMail(subject, sender_email, email, link, username, template); 

return res.json(rs.success({ jwt: new_user.getJwt() })); 

    }).catch(function(err){ 
     return res.json(rs.errorCode(err.message)); 
    }); 
+0

你能后整个'utilemail.js '文件内容?例如,那里定义了“sg”?关闭'};'在哪里打开? –

+0

我在主文件中定义了sg,在这里我导入了utilemail.js文件。 utilemail.js文件的完整代码可以在我的文章中找到。这就是我所有的 –

+0

不,因为你通过'utilemail'调用导出的函数(通过执行require('../service/ utilemail')(...)'),应该有一个缺失的部分你的问题。 –

回答

2

试试这个:

var sendMail= require('../service/utilemail').sendMail; 
sendMail(subject, sender_email, email, link, username, template) 
.then(function(){ 
    return res.json(rs.success({ jwt: new_user.getJwt() })); 
}, function(error){ 
    return res.json(rs.errorCode(err.message)); 
}) 
+0

我以前试过。在你的建议,我再次尝试,但同样的事情发生:我没有错误(答案是200 OK),但电子邮件不发送 –

+0

我改变了我的答案,尝试它 – Sergaros

+0

是的,它现在的作品。我这样使用它:\t var sendMail = require('../ service/utilemail')。sendMail; \t \t的sendmail(主题,SENDER_EMAIL,电子邮件,链接,用户名,模板) \t \t。那么(函数(){ \t \t \t回res.json(rs.success({智威汤逊:new_user.getJwt()}) ); \t \t \t})捕获(功能(ERR){ \t \t返回res.json(rs.errorCode(err.message)); \t}); –