プログラマを辞めて、早、10年近く。錆びれた脳を奮い起こして、Kindleにmobiを送信するスクリプトを作ってみました。当時、3流プログラマだったんだよな・・・・
とうわけで、環境的には
- Powershellの最新版が使えるOS(Windows7だとデフォでOKでした。Xpはわかんない)
- .net framework 2.0以上(最新版入れておけ)
- メール送信がSMTP経由であること(Hotmailとかはだめ。プロバイダの設定を確認してね)
- メール送信にTKMP.DLLを使います(スクリプトと同じディレクトリに入れておいてください)
原理的には簡単です。Yahoo pipeで取得したニュース系RSSをFeedbooksでmobiに変換できます。それをダウンロードして@free.kindle.comに添付ファイルとしてメール送信する。このタスクをWindows7標準のタスクスケジューラに登録して毎朝実行。Wifi接続を設定しておいたKindleを朝起きて顔を洗う前に電源を入れておけば、歯磨きが終わる頃に自動でニュースをダウンロードしてくれます。Wifi経由なら通信料はかからないよね、エコだよね。
では本体。エラー処理とかいい加減なのは・・・・
Param([String]$dldir=’temp’, [String]$file=’list.dat’) #スクリプトのpathを取得 #ディレクトリ分離 #スクリプトのディレクトリからテンポラリディレクトリ名の作成 #もし無かったら、ディレクトリ作成 #ダウンロードするURLが記述してあるファイル名の生成 #送信先(freek.kindle.com)を設定してください #smtpサーバー # 差出人(Kindle側でも許可しておいてください) #SMTPに接続するときのユーザー名 #SMTPに接続するときのパスワード #SMTPのポート(メールソフトの設定を確認) #TKMP.dllを使えるように読み込み(スクリプトのディレクトリから) #メールオブジェクトの作成 # ファイルをダウンロードするためのWebClientオブジェクトを生成 # ファイルリストから順にURLを抽出 ###### mobiのダウンロード # 指定されたURLからファイルをダウンロードし、同名のファイル名で保存 #ダウンロードしたファイルのフルパス ######メール送信 #差出人 # 本文のクラスを作成します #添付ファイルのパートを作成(ダウンロードしたファイルを添付) #本文と添付ファイルを持つ、マルチパートクラスを作成 #送信メール作成クラスに本文としてマルチパートを登録 # 相手のメーラーで「差出人」として表示 # 相手のメーラーで「あて先」として表示されます # メールの件名 # 付加情報など メーラの名前とか # SMTPサーバーへ接続 #SMTPの接続にSLLを使います。環境に合わせて変更を # 接続 |
手で整形したので間違っていたらごめんなさい。普通の人はどーやって書いているのか不思議。あ、メールを送信する度にSMTP接続しているから、直したほうがいいね。
内容的には
- スクリプトのあるディレクトリに”temp”フォルダを作成し
- そこにスクリプトのフォルダにある”list.dat”の中に記述してあるURLからファイル(mobi)をダウンロード
- それをSMTPで@free.kindle.comを送信し、ファイルを削除
当方のプロバイダではSMTP認証をSSL通信でやっています。ただ、Netscapeのメールを使っている人のために平文認証をやっていてw、そちらでも動作しました。AuthenticationProtocol とポート番号等を環境に合わせて設定してください。
ちなみに”list.dat”の内容は
# NIKKEI Web刊 / 日経Web |
さて、さらに面倒くさいことにWindows7のデフォルトの環境ではPowershellスクリプトを実行できません。ポリシーを変えてスクリプト実行するバッチファイルを作成しました。
Powershell -command “& {Set-ExecutionPolicy remotesigned -Force}” REM スクリプトのフルパス tempディレクトリ名 Powershell -command “& {Set-ExecutionPolicy restricted -Force}” |
このバッチファイルををタスクスケジューラに最上位の特権で実行するで登録します。バッチファイルを手動で動かすときには右クリックの管理者として実行してください。
最後に、参考にしたサイトと久しぶりにプログラミングもどきというか他人のコードを合体させた感想を
- ファイルのダウンロード http://www.atmarkit.co.jp/fwin2k/win2ktips/995dlfile/dlfile.html
- TKMP.DLLのサンプル http://logicalerror.seesaa.net/article/146003053.html
- TKMPクラスライブラリ http://uwa.potetihouse.com/library/tkmp/document/Index.html
- .net SmtpClientの問題点 http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx
- IMAPとか使えそうなライブラリ(怖くて試していない) http://www.advancedintellect.com/page.aspx?cn=buildupdates
しかし、メーラもいろんなプロトコルをサポートしなくちゃいけないんで大変ですな。そもそもSMTPに最初っから認証システムがついていればよかったのにね。昔と比べてネットに転がっているコードが多くて助かりますわ。
では、これが快適なKindleライフにとって少しでも参考になれば幸いです。