반응형
파일로 생성해서 사용중
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);
콜백이 필요하면 응용해서 사용해 보시길....
반응형