지메일(Gmail)로 온 메일을 실시간으로 문자(SMS)로 알려주는 알리미

기고니
(수정:2010-12-05) 
이제 데스크탑에서 실행시켜 둘 필요가 없게 되었습니다.
아래 링크를 참조해주세요.

------------------------

                                                              (수정:2010-10-05)

지메일로 온 메일을 체크하여 문자로 알려주는 프로그램입니다.
개인적으로 사용하기 위해 만들었는데 필요하신 분이 있을 것 같아 실행파일을 공개합니다.
10초마다 지메일 계정을 체크하면서 지메일로 온(INBOX로 들어온) 모든 새로운 메일에 대해서 문자로 알려줍니다. 

어떻게 공짜로 문자를 보내느냐구요?
트릭은 다음과 같습니다.
구글 캘린더에는 알림 기능이 있는데요,
알림 방법 중에 SMS를 이용한 알림이 무료로 제공이 됩니다.
이걸 이용하는거죠.
Google API를 이용해 현재시간 보다 약 1분뒤의 시각으로 SMS알림 설정을 하여 캘린더에 등록을 하면. 문자로 짠~ 하고 오는거예요.

사용하기에 앞서 몇가지 주의 사항이 있습니다.

읽지않은 모든 메일에 대해서 읽음 설정 후 캘린더로 포스팅하기 땜에 구글 캘린더의 특정 시간에 엄청나게 많은 이벤트가 등록될 수도 있습니다;
따라서 이를 방지하기 위해서는 알리미만을 위한 새로 구글 계정을 만들 필요가 있는데요.
아래 그림과 같이 새로운 계정을 하나 생성한 후 캘린더 설정에서 모바일 설정을 해줍니다.



그리고 나서 다시 원래 지메일 계정으로 로그인 해서 설정에서  IMAP이 Enabled되었는지 확인하고

그 다음에는 설정의 Send mail as: 에서  메일 포워딩을 위한 계정 설정을 합니다.

이렇게 설정을 하고 나면
알림을 받길 원하는 메일이 있으면 새로 만든 계정으로 포워딩을 하도록 해줍니다.
새로 오는 모든 메일에 대해서 알림을 받고 싶으면 설정의 Forwarding and POP/IMAP 메뉴에서 설정하면 되고 특정 메일에 대해서 알림을 받고 싶으면 아래와 같이 필터를 설정해주면 됩니다.

그런 뒤에 프로그램 파일의 압축을 풀고 GoogleSMS.bat파일을 실행한 뒤
새로 만든 계정의 메일주소와 비밀번호를 치면 새로운 메일에 대해서 캘린더에 알리미 등록을 해줍니다.


새로운 메일이 오면 몇 분 내로 문자로 알림을 받게 됩니다.
캘린더에는 어떤식으로 등록되는지 볼까요?

문자를 받으면 자세한 내용은 스마트폰으로 바로 지메일에 접속해서 확인하면 됩니다.
기본적으로 스마트폰에는 몇시간 간격으로 메일을 확인을 하도록 설정 할 수 있지만
자주 확인을 하도록 하면 배터리 낭비가 심하기 때문이 이런 프로그램이 필요합니다!ㅎ

개인적으로는 미국과 한국 간에 문자를 주고받을 때에 비싸기 때문에
해외문자요금을 아끼기 위해서 미국 휴대폰에서(버라이존 폰,스마트폰 아니고 데이터 요금제 아닌 경우) 한국 휴대폰으로  메시지를 전달 할 때에는 SMS 대신 메일로 보내고, 한국 휴대폰에서 미국으로 보낼 때에는 [상대방전화번호]@vtext.com 로 메일을 보내는 방식으로 사용하고 있습니다.
제 폰이 스마트폰이라 메일보내기가 가능하고, 내가 [상대방전화번호]@vtext.com으로 메일을 보내면 상대방 폰에 SMS로 전달이 되고 미국의 상대방이 해당 SMS에 답장을 보내면 제 메일로 오니깐 실시간으로 확인하기 위해서 메일을 받자마자 알림을 받는게 필요한거죠.
윈도우 모바일 기반의 스마트폰인지라 무료로 실시간 메일 알림기능을 제공하는 서비스를 찾기 힘들었습니다ㅜㅜ
나름 만족하며 사용하고 있습니다.
단점은 항상 컴퓨터를 켜두지 않는 사람은 사용하기 힘들다는거?ㅎ
자바로 작성되었는지라 따로 호스팅 서버를 가지신 분은 백그라운드에서 돌아가도록 하면 되지 않을까 싶기도 하네요.
그리고 프로그램 실행 중간에 통신장애로 exception이 발생하여도 바로 다시 접속 하니 화면에 에러메시지가 떠도 무시하시면 됩니다.
아참, Java Runtime Environment(JRE)가 깔리지 않으면 실행되지 않는데요.
이 경우 http://java.sun.com/javase/downloads/index.jsp 여기서 최신 JRE를 깐 후에 실행하면 됩니다.


-- 추가 --
2010-10-04  
- 특정 클래스가 없어서 에러나는 경우가 발생하여 라이브러리를 추가하였습니다.
- 버전을 붙였습니다.
2010-10-05
- 프로그램에 인자로 텍스트 파일을 넣으면 텍스트파일에 적힌 아이디와 암호를 토대로 지메일 접근하도록 수정하였습니다.
예) 새 계정의 메일주소가 aaa@gmail.com이고 비밀번호가 12345인 경우, 컴퓨터가 부팅될 때마다 자동 로그인 되게 하려면 다음과 같이 합니다.
      1.  pw.txt를 생성하여 첫줄에는 지메일주소, 두번째줄에는 비밀번호를 넣어 저장(보안 안되니 주의)
         ----------- pw.txt 파일-------------
         aaa@gmail.com
         12345
         -----------------------------------
      2.  GoogleSMS.bat파일을 다음과 같이 수정
         ----------- GoogleSMS.bat --------------
         java -jar GoogleSMS.jar pw.txt
         -----------------------------------------
      3. GoogleSMS.bat파일의 바로가기를 만들어서 '시작->프로그램->시작프로그램'에 넣어서 부팅될 때마다
         수행되도록 등록
      * pw.txt파일 대신 다른 파일명이라도 상관은 없습니다만 1번과 2번 과정의 파일이름은 동일해야 합니다.        


  • 광식이  댓글주소  수정/삭제  댓글쓰기

    헐 대단하시네요. 순간적으로 특정 사람한테서 메일이 왔을 때, sms로 알려주는 기능이 있지 않을까 해서
    찾아봤는데, 상용되는 서비스가 아직 있는지 모르겠지만, 이럴걸 가능하게 하실 줄이야.

    저도 본받고 싶습니다.`~~

  • DK  댓글주소  수정/삭제  댓글쓰기

    기고니님 설정은 잘한듯 한데요 .bat 를 실행하면 떴다가 바로 사라지는데요
    도움좀 주실 수 있나요? ^^

    • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제

      먼저 질문드리고 싶은건요,
      자바 런타임이 설치되어 있는 상태이신가요?

      그런데도 안된다면
      GoogleSMS.bat 파일을 편집해서요
      파일의 마지막 줄에
      pause
      라는 명령어줄을 삽입한다음 저장해서 실행하면
      ex)
      java -jar GoogleSMS.jar
      pause

      창이 사라지지않고 에러메시지가 보일꺼예요.
      어떤 메시지가 뜨는지 알려주시면 안되는 원인을 아는데
      도움이 될 것 같습니다.

    • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제

      코드를 살펴보니 에러나는 경우가 있어서 프로그램에 수정을 가하였습니다.

      혹시나 이메일 주소 입력하는 부분까지는 문제없는 경우라면
      GoogleSMS_ver1.0.zip 파일을 다시 다운받으셔서 실행해 보시기 바랍니다.

  • DK  댓글주소  수정/삭제  댓글쓰기

    고니님 감사합니다.. 자바를 깔고 하니 실행창은 보입니다.
    근데 메일은 입력이 되지만..
    메일입력 후 input password: 아무것도 안먹힙니다
    이건 어떻게 해야 할까요.. 도움 부탁드릴게요^^

    • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제

      암호를 입력하는 부분이라 보안상 키보드로 쳐도 암호가 원래 보이지 않게 해놓았습니다.
      암호를 친 후에 엔터키를 누르신 후에 반응을 보고 문제가 있으면 알려주세요.
      만약에 새로 만든 계정에 안읽은 메일이 아무것도 없는 경우라면 암호 입력 후에 아무런 반응이 없는 것이 정상입니다.
      메일을 보내서 테스트 해보시기 바랍니다.

  • DK  댓글주소  수정/삭제  댓글쓰기

    고니님 너무 감사합니다~
    도움주신거 정말 감사해요^^
    문자오는지 확인해볼게요~

  •  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제

      아래의 절차대로 해보세요.

      1. 포워딩 설정이 맞게 되었는지 확인해보세요
      : 이전 계정으로 메일을 보냈을 때 새 메일로 메일이 포워딩 됬는지 gmail.com에 직접 들어가서 확인해보세요.

      2. 새 계정에서 읽지 않은 메일이 존재하는 상태에서 프로그램을 실행하였을 때 프로그램에 '~~~~ X unreaded messages'라는 메시지가 보이는지 확인해보세요. 그리고 포스팅되었다는(posted) 메시지도 뜨는지 확인해보세요

      3. 새계정으로 구글 캘린더를 들어갔을 때 일정이 등록 되어있는지 확인해보세요


      * 모바일 설정은 새 계정에 하신 것 맞으시죠?

      * 잘 되다가 안되는 경우에는 새 계정을 이용해서 gmail.com으로 로그인 해보세요. 제대로 된 사용자인지 확인하기 위해서 인증하는 화면이 보일 수 있습니다. 이 때 사용자 인증을 거치면 하루 안에 제대로 동작하실거예요.

  •  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제

      잘 된다니 다행이네요.
      재 부팅시에는 새로 실행시켜야 합니다.
      시작프로그램에 GoogleSMS.bat파일의 바로가기를 등록하면
      자동으로 실행되지만 보안을 위해서 매번 메일주소와 비밀번호를 넣어야 합니다.
      만약에 혼자사용하는 컴퓨터이고, SMS를 위한 지메일 주소의 암호는 혹시나 유출이 될 수도 있다는 것을 감안하신다면
      위 글에서 1.1버전을 다운받아서 글 아래에 설명대로 해보세요.

      메일주소와 비번을 좀더 보안되게 저장 할 수도 있겠지만 그러기엔 제가 여기에 시간을 많이 투자하기 힘들어서요 이해 부탁드려요ㅎ

  • DK  댓글주소  수정/삭제  댓글쓰기

    별말씀을요^^
    너무 감사해서 머라 말씀 드려야할지 모르겠는걸요~
    암튼 잘 사용할게요~ 좋은 하루되세요~

  • motobike  댓글주소  수정/삭제  댓글쓰기

    정말 감사합니다. 아주 유용하게 쓸수 있을것 같습니다.
    지금 테스트해보고 있는데 에러없이 잘 되네요~!!

  • 하니  댓글주소  수정/삭제  댓글쓰기

    정말 대단하신분이군요.
    감사히 잘쓰겠습니다.

  • 하니  댓글주소  수정/삭제  댓글쓰기

    한가지만 여쭙게요..
    시작프로그램에 넣으면 도스화면이 뜨면서 실행이되는데, 처음 실행이 되면서 화면이 사라지게 하는 명령어는 없나요.다른사람이 컴을 쓰면서 자주 닫아버려서리..^^

    • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제

      도스 창 없이도 동작하도록 만들고 싶으시다는 거죠?

      약간의 트릭이지만 알려드릴게요.

      GoogleSMS.bat파일을 편집해서 java대신 javaw를 적습니다.
      예를들면 아래와 같이요,
      javaw -jar GoogleSMS.jar passwd.txt

      이렇게 하면 실행하였을 때 마찬가지로 도스화면이 떠요.
      하지만 화면에는 실행한 명령 외에는 아무것도 표시되지 않죠.(자바 프로그램을 윈도우 모드로 실행하였기 때문인데요.)
      실행한 명령조차 안보이게 하려면 javaw대신 @javaw 를 적으시면 됩니다.

      이 때에는 도스 창을 꺼버려도 자바 프로그램은 계속 돌아가고 있게됩니다.(창 저절로 닫히게 하는건 당장은 잘 모르겠네요^^; )

      실행되고 있는지를 확인하시려면
      Ctrl+Shift+Tab 키를 눌러서 'Windows 작업 관리자'창에서
      '프로세스' 탭으로 클릭해서 이동을 하셔서 '이미지 이름'에 javaw.exe가 있는지를 확인합니다.
      (다른 자바 프로그램이 띄워져 있거나 GoogleSMS를 이런방식으로 여러번 수행한 경우에는 javaw.exe가 여러개 보일 수도 있어요)
      프로그램을 종료하시려면 마우스를 갖다대고 오른쪽 버튼을 누른다음 '프로세스 끝내기'를 클릭하시면 됩니다.

      P.S. 현재는 메시지 전송내용이 GoogleSMS.log로 저장이 되도록 설정되어 있습니다. 공용컴퓨터에서 사용하면 전달된 메시지 내용이 노출될 수 있다는 말인데요(물론 패스워드 파일의 내용을 보고 직접 지메일로 로그인해서 훔쳐볼 수도 있고요; )
      그러니 주의해서 사용바랍니다.
      로그파일 안남기게는 쉽게 수정이 가능한데
      패스워드 문제는 직접 키보드로 패스워드를 치지 않는 이상 근본적으로 누출을 막기는 힘들것 같네요.

  • 뉴욕 에스키모  댓글주소  수정/삭제  댓글쓰기

    감사합니다~ 우연히 들렸는데, 너무나도 유용한 정보이네요~^^
    근데.. 한가지만 여쭤봐도 될런지요?
    이 기능을 이용하려면, 한대의 컴퓨터에 GoogleSMS.bat 이 파일이 계속 실행되어있어야 하는것인지요?
    즉, GoogleSMS.bat이 실행되어 있지 않으면, 알림서비스를 받기 힘든것인지요? 계속 컴퓨터를 켜놔야 하는건지 해서요..
    도움을 받고서도 궁금증만 던지네요 ^^

    • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제

      예. 아쉽지만 계속 실행 되어 있어야 합니다ㅎ
      따라서 지속적으로 켜져있는 컴퓨터에서 실행시켜 놓는게 좋겠네요
      머리를 좀 굴리면 자기 컴퓨터에서 실행 안 시키고도 알림서비스를 이용할 방법이 있을지도 모르겠지만,, 당장은.. 글쎄요^^;

      프로그래밍에 별로 관심이 없으실 것 같지만 기술적인 관점에서 생각을 해보면 제 생각은 이래요.
      구글 application engine에서 돌아가는 서비스를 생성해서(apps engine에 등록도 해야하고 좀 귀찮을거예요) 나에게 오는 메일을 생성한 app engine 서비스의 메일로 포워딩 설정을 한 후, 받은 메일을 처리하는 핸들러에서 Google SMS 프로그램이 사용하는 방식으로 내 캘린더에 포스팅하도록 하면 되지 않을까 싶어요(http://code.google.com/intl/ko-KR/appengine/docs/java/mail/overview.html#Receiving_Mail_in_Java] 사실 가능하지 않을 수도 있고 단지 생각이 그래요..ㅎ
      가능하도록 하고픈 욕심도 생기지만 시간 많이 뺏길 것 같아서 엄두를 못내겠네요ㅜㅜ 누가 멋지게 만들어 주실 분 없나요?ㅎ

  • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제  댓글쓰기

    Google application engine 사용해서도 같은 기능 구현 가능하네요^^;
    궁금해 못 참겠어서 짬내서 만들어보니 잘 동작하는것 같습니다.
    이젠 컴퓨터에서 실행시킬 필요가 없겠네요ㅎ
    좀 더 써보다가 나중에 설정방법 포스팅하겠습니다:)

    • 뉴욕 에스키모  댓글주소  수정/삭제

      성실한 답변 참 감사합니다~
      프로그래밍에는 워낙 문외한이지만, 설명해주시는 로직은 재미있네요.
      Google application engine 사용하는 방법 포스팅 기대해도 되죠? ^^
      감사해요~ ^^

    • Favicon of https://gigony.tistory.com 기고니  댓글주소  수정/삭제

      글 쓰기 귀찮아서 좀 늦어졌네요. 포스팅 하였으니 보세요:) (늦게 올려서 못보실려나..ㅎ )

  • aclife  댓글주소  수정/삭제  댓글쓰기

    정말 초대박이네요.
    딱 제가 원하던 프로그램인데 정말 너무 소중히 사용하겠습니다!!
    정말 감사합니다.