본문 바로가기
웹개발/Node.js

aws mail 발송시 사용하는 node mailer

by 코딩에서개발로. 2018. 10. 23.
반응형

파일로 생성해서 사용중

app.js 위치에 util 폴더 생성 후 sendmail.js파일 생성

var fs = require('fs');

var sendMail = {
 
// gmail을 이용한 메일 발송
gmail: function(from,to,subject,fname,params){

fs.readFile(__dirname + '/../email/' + fname, function(err, html){ //최상위 email 폴더 기준으로 스킨을 선택.

if(err){
console.log(err);
}else{
var toHtml = new String(html);
 
var nodemailer = require('nodemailer');
var transport = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: '구굴아이디'
pass: '구굴패스워드'
}
});
 
var mailOptions = {
'from': from,
'to': to,
'subject': subject,
'html': toHtml
};

transport.sendMail(mailOptions, function(error, response){
if (error){
console.log(error);
} else {
console.log("Message sent : " + response.message);
}

transport.close();
});
}
});
},
//aws 메일 발송 (테스트 필요)
awsMail: async function(from, to, subject, fname, params) {

await fs.readFile(__dirname + '/../email/' + fname, function(err, html){

var toHtml = html.toString();
toHtml = toHtml.replace('{href}', params.url); //치환필요시 사용
 
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
 
var transport = nodemailer.createTransport(smtpTransport({
host: config.awsEmailHost,
port: config.awsEmailPort,
secure: true,
auth: {
user: config.awsEmailId,
pass: config.awsEmailPw
}
}));
 
var mailOptions = {
from: from, // sender address
to: to, // list of receivers
subject: subject, // Subject line
text: '', // plaintext body
html: toHtml // html body
};
 
transport.sendMail(mailOptions, function(error, info) {
if (error) {
console.log(error);
} else {
console.log('Message sent: ' + info.response);
}
});
});
 
}
}

module.exports = sendMail;

 

필요한 곳에서 선언

const sendMail = require('../util/sendmail');

 

// 메일 발송 처리
var mailParams = {
'emailSubject' : 'TEST 메일 발송', //메일 제목
'emailFormNm' : "testSend.html", //메일 스킨 파일명
'userEmail' : 'admin@gyuha.com', //대상자 메일
'url' : 'http://www.naver.com', //내용중 변경필요한 파라메터 설정
'emailSendMsg' : '종료 후 전달 메시지'
}

sendMail.awsMail('발송이메일', '받는이메일', mailParams.emailSubject, mailParams.emailFormNm, mailParams);
 

 

콜백이 필요하면 응용해서 사용해 보시길....

반응형