테스트 사이트 - 개발 중인 베타 버전입니다

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

필요 모듈

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


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


소스

[code]

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);

[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 1개

의미가 없어져서 업데이트를 중단 합니다.
--- 중단된 사항 ---
수신거부
수신거부 해제
응용프로그램화

게시판 목록

개발자팁

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