グーグル携帯 HT-03A を買ったので、iモードのメールを自動転送 (追記あり)
買ってしまった。
文字入力のスピードがまだまだ上がらないけど、概ね満足している。
目下の難点が、Gmail から 友人の携帯へ送るメールが、迷惑メール対策で撥ねられてしまう点だろう。
アドレス変わりましたメールを送って、撥ねられた相手には iモードから送り直したが、安心は出来ない。
iモード契約を残して(315円/月)、imode.net も契約したので(210円/月)、読み書きは出来るのだが(スマートフォン向けページを使えば Firefox からも利用可能)、いちいちアクセスするのは面倒だ。
自動転送機能くらい付けてください>DoCoMo
そこで、自前で自動転送することにした。
以下のスクリプトを cron で実行する。
Cookie を取得しながら URL 転送を繰り返す。ああ面倒くさい。Mechanize とか使うといいのかな。
最後は、iモード.net の転送機能は使わず、メール本文のページを HTML のまま送信している。
メール送信周りはさくら仕様。
(7/24追記)
imode.net だが、ログイン通知メールとかいうのが毎回飛ぶ。
それが imode.net には表示されないので、消せない。
実機で受信しないといけない。普通のメールも含めて、imode.net はメールサーバ上にあるんじゃなくてただのクライアントであり、ケータイで受信して初めてサーバから消える。
そしてメールが溜まるとログインできなくなる。
このスクリプトが起動する度にログイン通知メールが蓄積されるので、頻繁にチェックしていると使い物にならない。
ログインをキープする 新着i の使用を推奨します。
#!/usr/local/bin/ruby require 'cgi' require 'net/https' require 'nkf' require 'net/smtp' docomoid="xxxxxxxx" docomopass="xxxxxxxx" forwarding_address="xxxxxxxx@gmail.com" def send_mail(mailto,mailbody) mailserver="xxxx.sakura.ne.jp" maildomain="xxxx.sakura.ne.jp" mailid="xxxx@xxxx.sakura.ne.jp" mailpass="xxxxxxxx" mailfrom="xxxx@xxxx.sakura.ne.jp" Net::SMTP.start( mailserver, 25, maildomain, mailid, mailpass, :login ) {|smtp| smtp.send_mail <<EOM, mailfrom, mailto From: #{mailfrom} To: #{mailto} Subject: Forwarding from imode Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: Quoted-printable #{mailbody} EOM } end response="" https = Net::HTTP.new('imode.net', 443) https.use_ssl = true #https.ca_file = 'base64.cer' #https.verify_mode = OpenSSL::SSL::VERIFY_PEER #https.verify_depth = 5 https.start { param="HIDEURL="+CGI.escape("?WM_AK=https%3a%2f%2fimode.net%2fag&path=%2fimail%2fm%2fsmarttopimobile&query=") param << "&LOGIN=WM_LOGIN" param << "&WM_KEY=0" param << "&MDCM_UID="+docomoid param << "&MDCM_PWD="+docomopass response=https.post( "/dcm/dfw", param ) } cookie=response['Set-Cookie'].split(',').join(';') /WM_IW_INFO_PA=([^;]+);/=~response['Set-Cookie'] wm_iw_info_pa=$1 #p wm_iw_info_pa loc=response['Location'].gsub(/^https:\/\/imode\.net/,'') https.start{ response=https.get( loc, "Cookie"=>cookie) #ag } cookie=response['Set-Cookie'].split(',').join(';') /WM_IW_INFO=([^;]+);/=~response['Set-Cookie'] wm_iw_info=$1 #p wm_iw_info loc=response['Location'].gsub(/^https:\/\/imode\.net/,'') https.start{ response=https.get( loc, "Cookie"=>cookie) #smarttopimobile } loc=response['Location'].gsub(/^https:\/\/imode\.net/,'') https.start{ response=https.get( loc, "Cookie"=>cookie) #smart } cookie=response['Set-Cookie'].split(',').join(';') /pwsp=([^;]+);/=~response['Set-Cookie'] pwsp=$1 #p pwsp loc=response['Location'].gsub(/^https:\/\/imode\.net/,'') https.start{ response=https.get( loc, "Cookie"=>"pwsp="+pwsp+"; WM_IW_INFO="+wm_iw_info+"; WM_IW_INFO_PA="+wm_iw_info_pa) #smart?func } response.body.split("\n").each{|line| if /<td><span class="unread"><a href="\.\/([^"]+)">[^<]*<\/a><\/span><\/td>/=~line loc=$1.gsub('&','&') https.start{ response=https.get( "/imail/m/imobile/acgi/"+loc, "Cookie"=>"pwsp="+pwsp+"; WM_IW_INFO="+wm_iw_info+"; WM_IW_INFO_PA="+wm_iw_info_pa) } send_mail(forwarding_address, response.body) end }