2017-05-22 2 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

아니야,'require ('../ service/utilemail') (...)'을 실행하여'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 센드 메일 (제목, SENDER_EMAIL, 이메일, 링크, 사용자 이름, 템플릿) \t \t 그 때는 (함수() { \t \t \t 반환 res.json (rs.success ({JWT : new_user.getJwt()})) \t \t \t}) 캐치 (함수 (ERR) { \t \t 복귀 res.json (rs.errorCode (err.message)). \t}); –