utf-8のメールをmail.gemを使って送るとWARNINGが出る。

Non US-ASCII detected and no charset defined.
Defaulting to UTF-8, set your own if this is incorrect.

明示的にcharsetを指定すればOK.

# coding: utf-8
require 'rubygems'
require 'mail'

mail = Mail.new do
  to       'foo@example.com'
  subject  'テスト'
  body     'テストメール'
end

mail.charset = 'utf-8' # It's important!
mail.delivery_method :sendmail
mail.deliver

"受動的なコミュニケーションツール"の件はとりあえず"非同期コミュニケーション"と"私書箱"の二つの問題に分けて考えることにする。まずは"非同期コミュニケーション"の方。

同期コミュニケーションが仕事に与える問題は"総量は同じでも小分けにすると質が下がる"というところ。Json Friedは"睡眠"のメタファーを紹介している。"都市部と高速道路での燃費"のメタファーでもいいかもしれない。

要は会話や電話を辞めてメールを使えということ。ついでにTwitterやSkypeチャットやGrowlも非同期、要するに1日1回まとめて処理すればいい。

そんなモノは簡単だ。メールもTwitterもフィードリーダーもSkypeも朝一回確認したら終了して使わなければ良い。でも実際にはなかなかそうはならないのは何故か。

"受信がデイリーになっても送信は一日何度もある"からだ。

メールを送る時に未読メールを見てしまう。Twitterでメッセージを送るときにTimelineを見てしまう。

「あれ?何をしてる途中だったんだっけ?そうだ、仕事のメールを送ろうとしてたんだ。」

これが仕事の妨げになっていることに気付いた。送信と受信(一覧)の機能が一緒になっているのがいけない。メールは完璧な非同期コミュニケーションツールなんだから、送信専用のメーラーがあればいい。

ということで簡単なスクリプトを書いてみた。

% vi ~/bin/ml
#!/usr/bin/env ruby                                                                                                                                              
to = ARGV[0]
body = ARGV[1]
length = 30
subject = body.split(//u)[0, length].to_s
IO.popen("mail -s '#{subject}' #{to}", 'r+') {|io| io.puts body }

gist: 812535 - MTA *sending only*- GitHub

% ml machida@fjord.jp 来週の打ち合わせの場所をGカレンダーに入れときました。

頻繁に送る相手はたいしていないのでshellのhistory補完で十分だ。でもどうせRuby使うなら普通に直接GmailのSMTPにつないでもいいかも知れない。しかしその代わりに伝統的な~/.mailrcとかが使える。

% vi ~/.mailrc
alias komagata komagata@gmail.com
alias machida machida@fjord.jp
% ml machida キムチもって帰りました。超うまかったす。

TwitterやSkypeも上記の様な感じの送信専用が欲しい。

関連:受動的なツール - komagata [p0t]