2017-05-22 172 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}); –