본문 바로가기

Program/My program

지메일(Gmail)로 온 메일을 실시간으로 문자(SMS)로 알려주는 알리미2(구글 어플리케이션 엔진 이용)

2011-07-25
메시지가 오지 않는 것을 수정하였습니다.

Input delay time for setting alarms (default: 70 [seconds]) :

라고 나오면 여유있게 '초'단위의 시간을 입력하세요. 300초 정도로 해 두어야 문제없이 동작하는 것 같습니다.
입력한 초만큼 지난 시각에 일정을 생성하도록 하였으며, 일정의 기간은 30분, 일정시각 1분 전에 sms를 보내도록 설정하였습니다.
300초로 해도 안되시면 600초이상으로 설정 해보시기 바랍니다.(메일을 바로 받아야 할 상황이 아니라면 말이죠).


2011-05-12

초기에 입력화면에서 딜레이 시간을 설정할 수 있도록 수정하였습니다. 

Input delay time for setting alarms (default: 70 [seconds]) :

라고 나오면 여유있게 '초'단위의 시간을 입력하세요. 120초 정도면 여유있지 않을까요?..

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

예전에 만들었던 데스크탑용 지메일 SMS알리미(http://gigony.tistory.com/46)를 Google Application Engine(GAE)을 이용하도록 바꾸어 보았습니다. 이젠 컴퓨터 항상 켜놓지 않고도 이용 가능합니다. 앞선 포스팅에서도 이야기했듯이 미국과 같은 해외에 있는 친구들이랑 문자 이용료를 절약하기 위해 사용이 가능하고,평소 사용하시는 메일이 지메일이 아니어도 상관없기 때문에 그 외에도 여러가지로 유용하게 사용할 수 있을 것 같습니다.

만들고 나서 2주간 사용해 보았는데 몇가지 제약 말고는 큰 문제 없이 잘 돌아가네요. 편리한 점이 더 많아요.
혼자 쓰다가 사용하기 쉽게 스크립트 짜고 허접한 설정화면 만들고, 화면 캡춰하고 하니 시간이 쉽게 쉽게 가네요.
역시나 제일 오래 걸리는건 블로그에 포스팅 하는 시간ㅜㅜ
어쨌거나 설명 시작합니다.

1. 개요


서비스의 개요는 다음과 같습니다. 사용하고 있는 메일 서비스에서 알림 받기를 원하는 메일에 대한 포워딩(forwarding) 설정을 해 높으면 포워딩 된 메일을 받아서 GAE가 미리 설정된 구글 캘린더 계정에 SMS알람을 등록함으로써 받은 메일에 대한 알림을 받게 됩니다.

따라서 이 서비스를 사용하기 위해서는 다음 사항에 대한 설정이 필요합니다.
 1. 지메일(gmail) 계정 갖기
 2. google SMS app engine 생성 및 등록
 3. 구글 캘린더(calendar)에서 SMS서비스를 이용하기 위한 모바일 설정
 4. 알림을 받기 위한 지메일 포워딩(forwarding) 설정
 5. 서비스 시작/중지 설정

그리고 필요한 정보는 다음과 같습니다.
 정보1. 구글 계정 아이디(for GAE)
 정보2. 구글 계정 비밀번호(for GAE)
 정보3. 구글 이메일 주소(= [정보1]@gmail.com )
 정보4. 구글 계정 아이디(for 구글 캘린더)
 정보5. 구글 계정 비밀번호(for 구글 캘린더)
 정보6. 생성한 google application의 아이디
(※1,2번과 4,5번에 사용되는 계정이 같아도 상관없습니다, 다만 기본적으로 SMS정보가 구글 캘린더의 기본 캘린더에 기록되기 때문에 캘린더가 지저분해질 수 있습니다. 지금 생각해보니 특정[googlesms같은] 캘린더에 저장되도록 하면 깔끔하게 될 것 같긴한데..; 구글 캘린더 API에서 지원하는지는 살펴보지 않아서 잘 모르겠네요)
(추가[2011-01-06]: ※만약에 google app engine을 사용하는 도메인 계정을 가지고 계신분은 해당 도메인의 메일주소를 정보4 대신에 입력하시면 됩니다. 예를들어, GAE를 사용하는 도메인 계정의 메일주소가 a@abc.com, 비밀번호가 abc이신 분은 정보 4와 정보5에 각각 a@abc.com과 abc를 입력하시면 됩니다.)

2. 설치 방법 

지메일(gmail) 계정 갖기
이미 지메일 계정을 가지고 계신분은 가지고 계신 계정을 사용하시면 됩니다.
안 가지고 계신 분은 지메일 계정을 만드시기 바랍니다(http://gmail.com)
여기서 설명에 사용할 예시에서는 생성된 지메일 주소(email address)가 
라고 가정합니다.(정보3에 해당)
구글 서비스는 메일주소 앞부분이 아이디가 되므로, 구글 아이디(id)는 gigony가 됩니다.
(정보1에 해당). 
비밀번호(정보2에 해당)는 알맞게 설정하시면 됩니다.

google SMS app engine 생성 및 등록

GAE(http://appengine.google.com)로 이동하여 정보3정보2 를 이용하여 로그인을 합니다.

'Create Application'을 클릭합니다.
처음 사용자의 경우, 사용자 확인을 하는 화면이 나옵니다. 번화번호를 +82 10 XXXX XXXX 형식으로(010사용자의 경우, 다른 번호도 앞에 0을 빼고 입력해야 함) 입력하시면 됩니다.

문자로 날라온 코드를 입력합니다.
만약에 기존에 google app engine을 사용하시고 계시는 분은 다음과 같이 나타날 겁니다. 마찬가지로 'Create Application'을 클릭하시면 됩니다.
새로운 application을 등록하는 화면이 나타납니다. 'Application Identifier'에 기존에 없는 이름으로 설정하시면 됩니다(잘 기억하세요). 저는 gigonytest로 하였습니다(정보6에 해당). 적당히 입력한 후에 'Create Application'을 클릭합니다.
application 생성이 완료되었습니다.

이제는 생성된 google app 서비스에 google SMS application을 등록할 차례입니다.

아래 파일을 다운받아서 압축을 풉니다.


 


압축 푼 후 생성되는 파일 중 'Script.cmd' 파일을 더블 클릭하기 전에,  자바 런타임(java runtime)이 설치 안되어 있으신 분은 http://www.oracle.com/technetwork/java/javase/downloads/index.html 에서 자바 런타임을 다운받아주세요.

자바 런타임이 설치된 상황에서 'Script.cmd' 파일을 더블 클릭합니다.
스크립트 파일에 의하여 자바 설치 유무를 체크하고, 어플리케이션을 올리기 위해 필요한 파일을 다운받고 자동으로 압축을 풀게 됩니다.
위 화면이 나타나면 어플리케이션 이름을 입력합니다. 이 예제의 경우에 앞서서 생성했던 어플리케이션 아이디인 gigonytest 를 입력 하겠습니다(정보6의 값 입력. 각자에 맞는  어플리케이션 아이디를 입력하시기 바랍니다.). 그리고 구글 캘린더 에 포스팅하기 위한 구글 아이디(정보4)와 비밀번호(정보5)를 입력합니다. 저같은 경우에는 구글 캘린더를 위한 또 다른 구글 아이디(gigon.bae)를 사용하였습니다. 
※만약에 google app engine을 사용하는 도메인 계정을 가지고 계신분은 해당 도메인의 메일주소를 정보4 대신에 입력하시면 됩니다. 예를들어, GAE를 사용하는 도메인 계정의 메일주소가 a@abc.com, 비밀번호가 abc이신 분은 정보 4와 정보5에 각각 a@abc.com과 abc를 입력하시면 됩니다.
이제 자동으로 SMS 어플리케이션을 업로드 합니다. 처음 실행하는 경우에는 아래와 같이 google app engine과 관련한 이메일 주소(정보3)와 암호(정보2)의 입력을 요청할 수도 있습니다. 정보를 입력해줍니다.
이제 아래와 같이 메시지가 나오면서 업로드가 끝나게 됩니다.


구글 캘린더(calendar)에서 SMS서비스를 이용하기 위한 모바일 설정

아래 그림과 같이 캘린더를 위한 구글 계정으로 로그인 한 후 캘린더 설정에서 모바일 설정을 해줍니다.

문자를 통한 사용자 확인을 거치면 모바일 설정이 끝나게 됩니다.

자, 다 되셨나요?
이제 각자가 사용하고 계시는 메일 서비스(지메일,네이버,다음 등)에서 다음 주소로 메일을 보내봅니다.
sms@[정보6].appspotmail.com
[정보 6] 대신에 정보6에 해당하는 정보를 입력합니다, 이 예제의 경우에 gigonytest가 되겠지요?
그 뒤 2분 정도 기다려 보고 보낸 메일에 대한 알림 문자가 휴대폰으로 오는지 확인해봅니다. 
문자가 오신다면 설치 성공!^^ 
google application engine에서 SMS서비스의 대시보드(dashboard)에 들어가서 왼쪽 메뉴에서 'Logs'를 클릭해봅니다.
'All requests'를 클릭하면 application engine으로 온 메일에 대해서 처리한 사항을 볼 수 있습니다.
로그 파일을 이렇게 볼 수 있습니다. 문제가 생겼을 때에는 로그에 에러 메시지가 뜨진 않았는지 확인해보시기 바랍니다.
구글 캘린더를 살펴봐도 아래 그림처럼 이벤트가 등록된 것을 확인하실 수 있습니다.


알림을 받기 위한 메일 포워딩(forwarding) 설정

이제는 알림을 받기 원하는 메일을 위의 메일 주소로 포워딩 하면 sms알림을 받을 수 있습니다.
지메일을 기준으로 설명하겠습니다. 
다른 메일 서비스를 사용하시고 계신경우에는 해당 서비스의 포워딩 설정을 해주셔서 원하는 메일에 대한 알람 설정을 해주시기 바랍니다.
지메일 오른쪽 위에 있는 '설정(Settings)'을 클릭하면 forwarding을 추가할 수 있는 화면이 나타납니다.
Forwarding and POP/IMAP 탭으로 가서 'Add a forwarding address'를 클릭하고(한국어 설정된 상태에서는 다르게 적혀있겠지요) 
sms로 시작하는, 업로드한 google apps의 메일주소를 입력합니다.
그러면 본인 확인을 위한 메일이 보내지게 되고, sms@XXX.appspotmail.com으로 보내진 메일 내용은 SMS문자와 함께 내용은 구글 캘린더에 등록이 될테니  승인번호를 입력할 수 있습니다.
저같은 경우 문자로 '(1/2)알림: Gmail Forwarding Confirmation (#507220323) -Receive Mail ... @ 2010.'이런 식으로 문자가 날라오던데, 이때 보여지는 507220323을  아래 화면에서 입력하고 'Varify'를 누르면 forwarding address가 등록이 됩니다.
그 이후의 위 화면에서, 지메일로 오는 메일을 sms@XXX.appspotmail.com로 포워딩하도록 설정하시면 지메일의 모든 메일이 SMS 알림으로 올 것입니다. 혹은 아래 그림과 같은 필터설정 화면에서 필터를 생성하여 원하는 특정 메일만 sms@XXX.appspotmail.com으로 포워딩 되도록 하셔도 됩니다.



서비스 시작/중지 설정
포워딩 설정을 해놓은 후에 알림을 당분간 받고 싶을 때에는 환경설정 화면으로 가서 잠시 동안 서비스 중지를 하실 수 있습니다.
google application engine 자체에도 서비스를 중지하거나 시작하는 기능이 있지만 그 기능으로 서비스를 중지하게 되면 사용하고 계시는 메일서비스에서 google app engine으로 포워딩된 메일들이 전송 실패하였다는 메일을 되돌려 받기 때문에 따로 기능을 만들었습니다.
http://(application ID).appspot.com 으로 이동하시면
아래와 같은 페이지를 볼 수 있습니다. 'GoogleSMS Configuration'을 클릭해봅니다.
해당 페이지는 관리자만이 접근 가능합니다. 따라서 계정 정보를 입력하는 창이 나오면 암호를 넣어 로그인을 해줍니다.
그러고 나면 아래와 같은 화면이 보이는데요, 아주 간단한 페이지입니다; . enable 혹은 disable 버튼을 클릭함으로써 서비스 시작 및 중지를 할 수 있습니다. 
만약에 서비스의 주인이 아닌 사람이 접근하게 되면 아래와 같은 메시지를 보게 될 것입니다.


3. 제한 사항 및 결론

이 서비스를 사용하면 데스크탑으로 돌릴 때에 비해 여러가지 면에서 장점이 많지만 제한사항이 존재합니다.
  • google application engine에서 메일로서 받을 수 있는 최대 요청크기는 10M로 명시 되어 있습니다. 10MB이상의 파일첨부가 된 메일은 처리 자체가 안됩니다. 따라서 큰 용량의 메일의 경우에는 알림을 받지 못할 수도 있습니다. 실제로 테스트를 해보니 7메가 이상의 첨부파일이 들어간 메일의 경우에도 메일 자체를 못받는 경우가 있었습니다.
  • 구글 캘린더에 사용되는 구글 계정의 정보는 스크립트에 의해 내부 파일(war/WEB-INF/appengine-web.xml)에 정보가 삽입된 후에 application engine의 서버에 업로드가 되고, 업로드 이후에는 하드디스크에 있는 파일에서는 계정 정보가 삭제됩니다. 따라서 구글 계정 정보는 application engine 서버 내에만 존재하게 되며 정보가 저장된 파일은 다른 사람이 접근할 수 없습니다. 따라서 암호유출에 대해서는 큰 걱정을 않으셔도 될 것 같습니다.
    혹시 잘못된 점을 찾아내신 분은 신속히(?) 알려주시면 감사하겠습니다.
  • 메일을 받았는데 알림을 받지 못한 경우에는 다음 사항을 확인해보시기 바랍니다.
      1. 해당 메일에 대한 포워딩 설정을 제대로 하였는가?
      2. appengine.google.com에 접속하여 SMS서비스의 대시보드(dashboard)에서 로그를 확인하였을
         때 Information 혹은 warning 메시지가 아닌, 빨간색의 Critical error가 발생하지는 않았는가?
      3. 구글 캘린더에 해당 메일에 관한 이벤트가 등록이 되어 있는가?
    위 3가지 사항에 아무 이상이 없는 경우에는 SMS 서비스 프로그램의 문제가 있는 것이 아니라 구글에서 알림을 위해 하루동안에 제공되는 SMS 갯수 제한을 초과했다거나, 새벽시간대이거나, 해당 통신사의 SMS서비스가 불안정해서 발생하는 문제일 가능성이 높습니다. 이럴 땐 하루 정도 뒤에는 괜찮아질 수 있습니다. 또 한가지 가능성은 구글 캘린더의 서버가 SMS알람을 위해 해당 시각의 이벤트 정보를 가져간 이후에 이벤트를 등록하게 되는 경우인데, 70초 만큼 뒤의 시각에 알람을 등록하도록 하였으므로 넉넉한 시간이라 생각하지만.. 구글 캘린더에 이벤트 등록되었음에도 불구하고 지속적으로 SMS가 오지 않는 경우가 많이 발생한다면 댓글로 알려주시기 바랍니다. 그 땐 좀 더 뒷 시각에 이벤트 등록을 해야할 것 같거든요.
이상으로 구글에서 제공하는 application engine과 구글 캘린더를 이용하여 공짜(?)로 메일 알림을 받는 방법에 대한 설명을 마치겠습니다. 
이 서비스에 사용된 모든 것을 공짜로 제공하는 구글의 서비스가 고맙네요ㅎ 잘 사용하시길 바라며 문의사항은 댓글 달아주세요.

마지막으로, 이 서비스 사용함에 따라 발생되는 문제에 있어서 저는 책임을 지지 않으며, 각자의 책임 하에 다운받아 사용하시기 바랍니다. (그렇다고 바이러스를 심은 것은 아니니 걱정마세요; )

업데이트 사항

2011-01-06
google app engine을 이용하는 도메인 사용자들도 사용가능하도록 수정하였습니다.

2011-02-11
익스플로러에서 admin페이지가 제대로 들어가지 않는 것을 수정하였습니다.

2011-05-12
초기에 입력화면에서 딜레이 시간을 설정할 수 있도록 수정하였습니다. 

Input delay time for setting alarms (default: 70 [seconds]) :

라고 나오면 여유있게 '초'단위의 시간을 입력하세요. 120초 정도면 여유있지 않을까요?..
 

2011-07-25

메시지가 오지 않는 것을 수정하였습니다.

Input delay time for setting alarms (default: 70 [seconds]) :

라고 나오면 여유있게 '초'단위의 시간을 입력하세요. 300초 정도로 해 두어야 문제없이 동작하는 것 같습니다.
입력한 초만큼 지난 시각에 일정을 생성하도록 하였으며, 일정시각 1분 전에 sms를 보내도록 설정하였습니다.
300초로 해도 안되시면 600초이상으로 두고 해보시기 바랍니다.(메일을 바로 받아야 할 상황이 아니라면 말이죠)