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

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

필요 모듈

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개

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

게시글 목록

번호 제목
15895
15894
15893
15888
15887
15886
15885
jQuery .end()
15884
15883
jQuery .each()
15882
jQuery .die ()
15881
15880
15878
15877
15876
15874
15873
15872
15871
15866
15865
15864
15863
15862
15861
15859
15858
15857
15856
15855