2016-11-21 4 views
1

NodeJS를 처음 사용했습니다. 나는 contact us 페이지에서 일하기 시작했습니다.이 페이지는 제출 될 때 다음 HTML이 포함 된 확인 이메일을 사용자에게 발송합니다.NodeJS의 다른 파일에서 HTML (전자 메일 본문)을 읽는 방법

<p>Hello Sujit,</p> 
<p>Thank you for approaching us.</p> 
<p>We have received your request and our executive will get in touch with you soon.</p> 
<p>Thank you.</p> 

다음은 이메일 보낼 수있는 코드 :

var mailer = require("nodemailer"); 

var emailBody = "<HTML above>"; 

// Use Smtp Protocol to send Email 
var smtpTransport = mailer.createTransport("SMTP",{ 
    service: "#######", 
    auth: { 
     user: "#########", 
     pass: "#######" 
    } 
}); 

var mail = { 
    from: "######################", 
    to: params.email, 
    subject: "Welcome user.", 
    text: "", 
    html: emailBody 
} 

smtpTransport.sendMail(mail, function(error, response){ 
    if(error){ 
     console.log("Mail error:>>"); 
     console.log(error); 
    }else{ 
     console.log("Message sent: " + response.message); 
    } 

    smtpTransport.close(); 
}); 

는 현재 nodemailer를 사용하여, 나는 동일한 파일에 정의 된 HTML의 몸이 이메일을 보내고 - app.js. 지금까지 잘 작동합니다. 그러나 본문 내용을 직접 관리 할 수 ​​있도록 HTML의 변수/자리 표시자를 "이름"과 다른 파일에 배치 할 수있는 방법이 있습니까? 본문 내용을 변수 emailBody에로드 할 수있는 방법.

감사합니다.

+0

노드는 템플릿에 사용할 수 많은 모듈이 있습니다. – Quentin

+2

https://nodemailer.com/2-0-0-beta/templating/ – Rayon

답변

2

예 !! 특정 전자 메일의 텍스트 파일을 만드는 "템플릿"이라는 이름으로 폴더 하나를 만듭니다. welcome.txt와 같습니다.

<p>Hello #name,</p> 
<p>Thank you for approaching us.</p> 

등 welcome.txt 기록 코드 그런 다음 ([파일 경로]) fs.readFile 등에 해당 파일을 읽고이 변수 값을 저장할 수있는 FS 모듈을 사용. var mailContent = fs.readFile ([파일 경로])와 같습니다. 그런 다음 javascript replace 함수를 사용하여 #name을 실제 이름으로 바꿉니다. 마찬가지로 mailContent.replace ('# name', 'abcd')

+1

도움이되는 경우. 허용되는 것으로 표시하십시오 – AJS

+1

더 큰 응용 프로그램과 큰 HTML 전자 메일의 경우 nodemailer 서식 파일을 사용하는 것이 유용 할 수 있지만 이러한 작은 용도로는이 솔루션이 효과적입니다. 감사! –

0

예, 키 값 쌍을 사용하여 JSON 구조를 유지 관리 할 수 ​​있습니다.

template.json

{

"제목": "수신 확인 메일",

"몸": 위 HTML

}

그리고 당신이 읽을 수있는 필요 이 JSON을 함수의 매개 변수로 전달하십시오.

var template = require ('./ templates.json);

VAR 메일 = {

from: "######################", 
to: params.email, 
subject:template.Subject, 
text: "", 
html: template.Body 

}

+0

이렇게하는 것이 좋은 방법이라고 생각하지 않습니다. HTML을 별도의 파일로 보관하면 UI 사용자는 쉽게 형식이 지정된 HTML이되므로 쉽게 변경할 수 있습니다. –

+0

예 물론, 이것은 요구 사항과 다릅니다. 이 접근법은 즉시 여러 템플릿을 구성 할 때 도움이됩니다. 그리고 이것으로 HTML과 주제의 매핑을 같은 장소에서 구성 할 수있는 JSON의 모든 템플릿과 주제 설정을 가질 수 있습니다. –