이글루스에서도 모블로깅을 지원한다고 하고, inel 님의 모블로그를 보고 자극도 받아서..
저도 간단하게 나마 Gmail을 이용한 모블로그를 만들어 보았습니다.(상단버튼,사이드바에도 있음)
gmail 에 모블로그용 계정을 하나 만든후 (꼭 gmail 일 필요는 없겠지만.. 용량이 많아서.. ^^)
메일을 읽어오는 Reader 스크립트를 하나 만들었습니다. pop3 는 보안접속처리 때문인지 잘 되지가 않더군요.
그래서 GMailer for PHP 라이브러리를 이용해서 구현했습니다.
서버가 Window 인지라.. 그냥 윈도우 스케줄러를 이용 유휴시간에 한번씩 Reader 스크립트를 돌리게 했는데..
이 스케쥴러가 유휴시간은 도대체 어찌 체크를 하는지 지맘대로인 경우가 많군요 -_-; cron 으로 바꾸던지 해야할듯
하여튼 읽어다가 기존처럼 제로보드에 레코드 하나 추가하고, GD 를 이용해서 썸네일 만들어 줍니다.
PHP + GMail + 제로보드 + GD라이브러리 로 구현된 모블로그라고 해야겠군요.
제 핸드폰 애니콜 SCH-E200 과 Clie TH55 에서 보내보니 잘 받아 지네요. 단 클리에일경우 한글이 깨집니다. 쩝..
송신자 필드 분석해서 스팸도 막고 해야겠지만, 일단 아무데도 안 알린 계정이니 문제는 없을듯 합니다 🙂
흠.. 문제는 포토메일을 보내는데 드는 패킷요금이군요 -_-;
핸폰사진한장 보통 25000바이트, 512바이트당 6원이니까 25000/512=48*6=288, 포스팅 하나에 약 300원 드는거군요.
여러분께선 모블로그에서 글당 최소 300원의 가치를 지니는 글을 보고 계신겁니다. 🙂
혹시 필요하신분들을 위해 소스를 공개합니다. 막코딩인거는 아시죠 🙂
제로보드가 아닌 다른 게시판및 툴을 사용하신다면 수정이 좀 필요합니다..
[#!_이메일 읽어오기용 gmail_reader.php 소스보기.. ▽|그만 볼래요.. △_!#]
<?
require("libgmailer.php");
$gm = new GMailer();
$gm->setLoginInfo("gmail 아이디", "gmail 암호", "GMT+9"); // GMail 계정정보
if ($gm->connect()) {
$gm->fetchBox(GM_STANDARD, "Inbox", 0); // 수신함
$snapshot = $gm->getSnapshot(GM_STANDARD);
if ($snapshot) {
for ($i = 0;$i < $snapshot->box_total ; $i++ )
{
if ($snapshot->box[$i]["is_read"] == 1) // 안읽은 메일만
{
$gm->fetchBox(GM_CONVERSATION, $snapshot->box[$i]["id"], 0);
$conv = $gm->getSnapshot(GM_CONVERSATION);
// 제목,내용,첨부파일,받은날짜 빼오기
$subject = $conv->conv[0]["subj"];
$body = $conv->conv[0]["body"];
$filename = $conv->conv[0]["attachment"][0]["filename"];
$recvdate = strtotime($conv->conv[0]["dt"]);
// 인코딩변환
$subject = mb_convert_encoding($subject, "EUC-KR", "UTF-8");
$body = mb_convert_encoding($body, "EUC-KR", "UTF-8");
// 파일이름은 현재시간
$filename = urlencode(time().".jpg");
// 첨부파일 받기 - 자신의 서버에 attachment_down.php 위치지정
$dlfile = "http://myserver.com/attachment_down.php";
$addr = $dlfile."?a=".$conv->conv[0]["attachment"][0]["id"]."&m=".$conv->conv[0]["id"]."&f=$filename";
$fp = fopen($addr,'r');
while(!feof($fp)) {
fread($fp, 100*1024);
flush();
}
fclose ($fp);
// SKT 메일 앞부분 잘라내기 - 혹시.. KTF 이신분들은 수정필요 :)
$body =str_replace("<b><font color=\"red\">회신시 NATE.com의 폰넘버메일로 전달됩니다.</font></b>","",$body);
$body =str_replace("<br /><br>","",$body);
// 이미지 크기 조정
// Thumbail : 150 X 113 , 파일명앞에 s_
// 원본이미지 : 448 X 336
make_thumbnail_image(150,113,$filename,"./img/s_".$filename);
make_thumbnail_image(448,336,$filename,"./img/".$filename);
// 원본삭제
unlink($filename);
// 제로보드에 기록하는 함수
// 제로보드를 안쓰시는분들은 아래 제목,내용,날짜,파일이름을 가져다 쓰세요.
write_to_zb($subject,$body,$recvdate,$filename);
}
}
}
$gm->disconnect(); // 연결끊기
}
// 썸네일 만들기
function make_thumbnail_image($x,$y,$src_filename,$dst_filename) {
$img_info = getimagesize ($src_filename);
if ($img_info[2] =="2") {
$src_image=ImageCreateFromjpeg($src_filename);
$dst_image = ImageCreateTrueColor($x, $y);
ImageCopyResized($dst_image,$src_image,0,0,0,0,$x+1,$y+1,$img_info[0],$img_info[1]);
Imagejpeg($dst_image,$dst_filename,90);
ImageDestroy($dst_image);
ImageDestroy($src_image);
return $dst_filename;
}
}// 제로보드에 기록하기
// 중요!! : 바로 이전글의 내용을 참조해서 기록하는 방식이므로, 게시판에 글 한개는 무조건 있어야 합니다!
function write_to_zb ($subject,$memo,$recvdate,$sitelink1)
{
$dbconn = mysql_connect("DB서버","mysql계정","mysql암호"); // 자신의 mysql dbsetting
$status = mysql_select_db("DB명",$dbconn); // 자신의 mysql db명
$id = "moblog"; // ZeroBoard 게시판 이름
// 마지막 글 정보 읽어오기
$sel_query = "select division,headnum,no,ip,password,name,homepage,email,category,is_secret,use_html,ismember,islevel from zetyx_board_".$id." order by no desc";
$result = mysql_query($sel_query,$dbconn);
$res = mysql_fetch_row($result);
$sel_query3 = $sel_query;
//$reg_date = time();
$reg_date = $recvdate;
$sel_query = "insert into zetyx_board_".$id."(";
$sel_query = $sel_query." division,headnum,prev_no,next_no,ip,password,name,homepage,email,category,";
$sel_query = $sel_query." is_secret,use_html,ismember,islevel,";
$sel_query = $sel_query." subject,reg_date,sitelink1,sitelink2,memo) values(";
$sel_query = $sel_query." $res[0],$res[1]-1,0,$res[2],'$res[3]','$res[4]','$res[5]','$res[6]','$res[7]',1,";
$sel_query = $sel_query." '','2',$res[11],$res[12],";
$sel_query = $sel_query."'$subject',$reg_date,'$sitelink1','','$memo')";
$sel_query2 = $sel_query;
$result = mysql_query($sel_query,$dbconn);
$res_val = mysql_affected_rows();
$sel_query = "update zetyx_admin_table set total_article=total_article+1 where name='".$id."'";
$result = mysql_query($sel_query,$dbconn);
$sel_query = "select no from zetyx_board_".$id." order by no desc";
$result = mysql_query($sel_query,$dbconn);
$res_l = mysql_fetch_row($result);
$inserted_no = $res_l[0];
$sel_query = "update zetyx_board_".$id." set prev_no=".$res_l[0]." where no=".$res[2];
$result = mysql_query($sel_query,$dbconn);
$sel_query = "update zetyx_board_category_".$id." set num=num+1 where no = 1";
$result = mysql_query($sel_query,$dbconn);
$sel_query = "update zetyx_division_".$id." set num=num+1 where no = 1";
$result = mysql_query($sel_query,$dbconn);
}?>
[#!_END_!#]
[#!_첨부파일 다운로드용 attachment_down.php 소스보기.. ▽|그만 볼래요.. △_!#]
<?php
require_once("libgmailer.php");
$attid = (isset($_REQUEST["a"]))? $_REQUEST["a"] : 0;
$mid = (isset($_REQUEST["m"]))? $_REQUEST["m"] : 0;
$fname = (isset($_REQUEST["f"]))? $_REQUEST["f"] : 0;
if ($attid && $mid && $fname) {
$gm = new GMailer();
$gm->setLoginInfo("gmail 아이디", "gmail 암호", "GMT+9"); // GMail 계정정보
if ($gm->connect()) {
header("Content-Type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.$fname.'"');
$gm->getAttachment($attid, $mid, $fname);
exit();
}
}
echo "Download error.";
?>
[#!_END_!#]
와… 좋네요…
저는 pop3이용한 모블로그 코딩중입니다.
멜헤더분석하기가 넘 힘드네요^^
gmail 라이브러리가 있는줄을 몰랐네요.
좋은 정보 감사합니다.
POP3 성공하시면 꼭좀 알려주세요. 전 포기해버려서.. ^_^;
퍼가도 될까요?
혹시 안된다면.. 자료 삭제 하겠습니다.
지금 당장 올릴거는 아니구요.. ^^;;
가져다가 모블로깅에 쓰시는거면 몰라도 글내용을 퍼가시진 말아주셨으면 합니다.
이런게 있더라하고 링크만 올려주시면 안될까요 ? 🙂
아..네 알겠습니다. ^^*
🙂
와~ 대단하세요. 저는 얼마전에 LGT로 바꿨는데 사진메일 하나 보내는데 200원쯤 드는 것 같아요. 무제한 사진메일 쓸 때가 좋았는데 말이에요. ^^
저도 이거때문에 011 무제한 컬러메일 한번 신청해 봤습니다. ^^
근데 어디 돌아다니질 않아서 사실 모블로깅이라고 할꺼리가 별루없어요 T_T
어떻게 적용하는지 잘 모르겟는데…구체적으로 제로보드와 사용할경우 어떻게 해야 되는지…그리고 처음 설치와 세팅은 어떻게 하는지 알려주셨으면 좋겠어요~^^
링크블로그 설치해보셨으니.. 거의 비슷합니다. 아래 제로보드에 추가하는 함수도 있구요.
근데 문제는 현재 gmail 이 바꿔셔 gmailer 가 동작을 안하고 있습니다. 새버전이 나올때까지 기다리셔야 할듯..