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

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

필요 모듈

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개

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

게시글 목록

번호 제목
16019
16015
16014
16013
16011
16010
16009
16008
16004
16003
16002
16001
15993
15992
15991
15988
15987
15986
15985
15981
15980
15979
15978
15977
15976
15975
15974
15973
15971
15970