Twidge を試してみたが…
Twitter クライアントの一つである Twidge を試してみた.
Haskell で書かれており,コマンドラインから Twitter の API を叩くのに便利なように作られている.
-m (--mailto) オプションで結果をメールで送信する機能があるのだけど,これが俺の環境ではうまく動いてくれない.
sendmail の設定は Mac OS X で Postfix(sendmail) を使って CLI でメールを送る - EAGLE 雑記 に書いた通りにしてある.
twidge lsreplies -lsum foo@example.com
とすると,Commands/Ls.hs の mailto 関数のところで止まってしまう.
この状態で C-c で殺すと
sendmail: fatal: No recipient addresses found in message header
という sendmail のエラーメッセージが表示される.原因がわからない.
ちなみに,このようなコードはうまく動く.
import HSH main = runIO $ ("cat", ["foo.mail"]) -|- ("/usr/sbin/sendmail", ["-t"])
mailto のソースは以下のようになっている.runIO, echo, (-|-) は HSH モジュールの関数.
mailto section cp args m recipient = runIO $ echo (message ++ "\n") -|- (sendmail, ["-t"]) where sendmail = (forceEither $ get cp section "sendmail")::String msgid = genMsgId section m cp subject = take 30 (sText m) ++ "... (twidge " ++ section ++ ")" message = unlines $ (case get cp section "mailfrom" of Left _ -> ["Subject: " ++ (sSender m) ++ ": " ++ subject] Right x -> ["From: " ++ (sSender m) ++ " <" ++ x ++ ">", "Subject: " ++ subject] ) ++ ["Message-ID: " ++ msgid, "X-Twidge-urlbase: " ++ forceEither (get cp "DEFAULT" "urlbase"), "X-Twidge-server-base: " ++ serverHost cp, "X-Twidge-command: " ++ section, "X-Twidge-update-id: " ++ sId m, "X-Twidge-update-sender: " ++ sSender m, "X-Twidge-update-recipient: " ++ sRecipient m, "To: " ++ recipient, "", sText m, "", "(from " ++ sSender m ++ ")" ,"" ,"Tweet URL: http://twitter.com/" ++ sSender m ++ "/status/" ++ sId m ,"Reply URL: http://twitter.com/home?status=@" ++ escapeURIString isUnreserved (sSender m ++ " ") ++ "&in_reply_to_status_id=" ++ sId m ++ "&in_reply_to=" ++ escapeURIString isUnreserved (sSender m) ,"User home: http://twitter.com/" ++ sSender m ]