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のディレクトリを作ってその中にメールで送信したテキストを一応保存しておくことにした。

*1:図書館で調べる本の題名とか。

*2:依存するパッケージがあるがそれも

*3:窓使いの憂鬱を使ってどこかのキーに&ShellExecuteとかでバインドしておくと楽かも