PCから携帯にメールを送るスクリプト
今までメールソフトから自分のケータイアドレス宛にメールを作成して送っていたが、メールソフトはめったに使わないので手間がかかりすぎる。ちょっとしたメモ*1を送りたいだけなのに、それにかかる手間が大きすぎてよほどのことじゃないと使えない。これではメモとして使う意味がないなー、と思ったので作ってみた。(最近広瀬先生のRubyプログラミング基礎講座を読んでRubyの簡単なところがわかるようになったので練習もかねて。)
#!/usr/bin/env ruby # p2k.rb # -*- Mode: Ruby; coding: shift_jis -*- # # # # $KCODE = "SJIS" require 'kconv' require 'fileutils' require "win32/clipboard" include Win32 require 'rubygems' require 'mechanize' @DIRECTORY = "mail" # あらかじめ作成しておく @TO = 'fugafugahogehoge@docomo.ne.jp' # 自分のケータイアドレス @GMAILUSERNAME = 'fugafugahogehoge' @GMAILPASSWORD = 'fugafugagehogeho' def make_filename() return Time.now.strftime("%Y_%m_%d_%H_%M_%S.txt") end def write_file(data) path = @DIRECTORY + '/' + make_filename() open(path, "w+") do |output| output.print data end return path end def send_gmail(filename) body = open(filename).read.to_a subject = body.shift.chomp body = body.join agent = WWW::Mechanize.new agent.user_agent_alias = 'Windows Mozilla' gmail_page = agent.get("http://mail.google.com/mail/h/") login_form = gmail_page.forms.first login_form['Email'] = @GMAILUSERNAME login_form['Passwd'] = @GMAILPASSWORD agent.submit(login_form) gmail_page = agent.get('http://mail.google.com/mail/h/?v=b&pv=tl&cs=b&f=1') mail_form = gmail_page.forms.with.name('f').first # "f"という名前のフォームを探す if mail_form then mail_form['to'] = @TO mail_form['cc'] = nil mail_form['bcc'] = nil mail_form['subject'] = subject.toutf8 mail_form['body'] = body.toutf8 send_button = mail_form.buttons.name('nvp_bu_send') agent.submit(mail_form, send_button) else puts "Error : Cant' send gmail." end end file = write_file(Clipboard.data) send_gmail(file) # keitai.rb ends here.
上のスクリプトをファイルに保存する。(適当に自分のメールアドレスなどは変更)RubyGemsでMechanizeとClipboardなど*2をインストールしたら準備完了。クリップボードに格納されたテキストを指定したメールアドレス送る。クリップボードの一行目はメールのタイトルになる。たとえば
PCから送るよテスト ほげふが
なら「PCから送るよテスト」がタイトルで「ほげふが」が本文。スクリプトの実行はコマンドプロンプトとかほかの何か*3でやる。コマンドプロンプトなら
ruby p2k.rb
でOK。p2k.rbのディレクトリを作ってその中にメールで送信したテキストを一応保存しておくことにした。