네이트온 팀룸으로 메일 수신 확인
필요 모듈
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에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 4976 | 기타 | 5년 전 | 2120 | ||
| 4975 | 웹서버 |
nooree
|
5년 전 | 2765 | |
| 4974 | node.js |
younhoso
|
5년 전 | 2135 | |
| 4973 | PHP |
|
5년 전 | 3638 | |
| 4972 | 기타 |
younhoso
|
6년 전 | 2261 | |
| 4971 | JavaScript | 6년 전 | 2488 | ||
| 4970 | 웹서버 | 6년 전 | 4123 | ||
| 4969 | JavaScript |
|
6년 전 | 2783 | |
| 4968 | JavaScript |
|
6년 전 | 1934 | |
| 4967 | JavaScript |
younhoso
|
6년 전 | 2043 | |
| 4966 | JavaScript |
|
6년 전 | 2116 | |
| 4965 | PHP |
|
6년 전 | 2104 | |
| 4964 | 기타 | 6년 전 | 2920 | ||
| 4963 | JavaScript | 6년 전 | 2088 | ||
| 4962 | JavaScript | 6년 전 | 2285 | ||
| 4961 | jQuery |
아이티몬스
|
6년 전 | 2094 | |
| 4960 | PHP | 6년 전 | 2738 | ||
| 4959 | 기타 | 6년 전 | 2566 | ||
| 4958 | PHP |
아이티몬스
|
6년 전 | 4577 | |
| 4957 | 기타 | 6년 전 | 2094 | ||
| 4956 | 정규표현식 |
하늘위의길
|
6년 전 | 2321 | |
| 4955 | 정규표현식 |
하늘위의길
|
6년 전 | 2674 | |
| 4954 | 웹서버 |
하늘위의길
|
6년 전 | 4138 | |
| 4953 | PHP | 6년 전 | 2525 | ||
| 4952 | PHP |
몰라무서워
|
6년 전 | 3212 | |
| 4951 | MySQL | 6년 전 | 4131 | ||
| 4950 | jQuery | 6년 전 | 3613 | ||
| 4949 | node.js | 6년 전 | 2678 | ||
| 4948 | node.js | 6년 전 | 2404 | ||
| 4947 | node.js | 6년 전 | 2647 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기