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

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

필요 모듈

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개

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

게시글 목록

번호 제목
15935
15934
jQuery .first()
15933
15932
15931
15930
15929
15928
15924
15923
15922
15921
15920
15919
15917
15916
15915
15914
15913
15912
15911
15910
15909
15908
15907
15906
15901
15900
15899
15898