네이트온 팀룸으로 메일 수신 확인 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

네이트온 팀룸으로 메일 수신 확인 정보

node.js 네이트온 팀룸으로 메일 수신 확인

본문

필요 모듈

node-libcurl, querystring, flat-file-db, yapople


안내
미완성입니다. 일단 수신은 되요.


소스


var Curl = require( 'node-libcurl' ).Curl;
var querystring = require('querystring');
var flatfile = require('flat-file-db');
var db = flatfile.sync('./tmp/my.db');
/*
db.put('test', 'zzz');
console.log(db.get('test'));
db.del('test')
*/
var Client = require('yapople').Client;
var client = new Client({
	hostname: 'pop3.nate.com',
	port:  995,
	tls: true,
	mailparser: true,
	username: '아이디@호스트',
	password: '비밀번호'
});
var Time = 5000; // 실행주기 (1000->1s)
var testInterval;


testInterval = setInterval(function(){
	client.connect(function() {
		client.retrieveAll(function(err, messages) {
				messages.forEach(function(message) {
					var nowDate = new Date();
					var mailTime = message.date;
					var last_time = db.get('last_time');
					console.log(last_time, nowDate);
					if(last_time != undefined) db.put('last_time', nowDate.getTime()); // 최초 실행시 이전 메일은 무시
					if(mailTime.getTime() <= last_time) return; // 메일 수신 시간이 기록된 시간보다 작으면 실행 차단
					db.put('last_time', mailTime.getTime()); // 기록 시간 갱신

					// --- 이메일이 차단 상태인지 체크 ---
					var MailCheck = db.get(message.from[0]['address']);
					//db.del(message.from[0]['address']); // - 차단 해제
					if(MailCheck != undefined) return;
					//db.put(message.from[0]['address'], 'block'); // - 차단

					/*
						// --- 이미 수신된 메일인지 체크 ---
						var messageDB = db.get(message.messageId);
						//db.del(message.messageId); // 수신확인 삭제
						if(messageDB != undefined) return;
						//db.put(message.messageId, 'block'); // 수신확인 처리
					*/


					/*
						console.log('======================');
						console.log('from Email: '+message.from[0]['address']);
						console.log('from Name: '+message.from[0]['name']);
						console.log('messageId: '+message.messageId);
						console.log('date: '+message.date);
						console.log('subject: '+message.subject);
						console.log(mailTime.getTime());
						console.log(nowDate.getTime());
					*/
					var FullDate = mailTime.getFullYear()+'-'+mailTime.getMonth()+'-'+mailTime.getDate()+' '+mailTime.getHours()+':'+mailTime.getMinutes();
					var msg = '['+message.from[0]['name']+' - '+message.from[0]['address']+'] '+FullDate+'\n'+message.subject;
					var curl = new Curl();
					// 네이트온으로 발송
					curl.setOpt('URL', '웹훅주소');
					curl.setOpt('FOLLOWLOCATION', true );
					curl.setOpt(Curl.option.VERBOSE, true );
					curl.setOpt('SSL_VERIFYHOST', 0);
					curl.setOpt('SSL_VERIFYPEER', 0);
					curl.setOpt(Curl.option.HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']);
					data = {'content' : msg};
					data = querystring.stringify(data);
					curl.setOpt(Curl.option.POSTFIELDS, data);
					curl.perform();
					curl.on('end', curl.close.bind( curl ) );
					curl.on('error', curl.close.bind(curl));
				});
			client.quit(); // 커넥트 종료
		})
	});
},Time);
추천
3

댓글 1개

전체 5,352
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT