Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
« :: »
2009/09/24

Thunderbirdのアドレスブックからメールアドレスを取り出す

  perl  thunderbird 
このエントリーをはてなブックマークに追加

最近spamがまた酷くなってきたので、フィルタリングのルールを強くしたら、仕事関係のメールがspamに振り分けられるという問題が発生してきたので、メーラーのアドレス帳からメールアドレスを拾ってホワイトリストを作ろうと思って、Thunderbirdのアドレス帳からメールアドレスを抽出するスクリプトを書いてみました。

Thunderbirdのアドレスブックは.mabというちょっと変な形式になっています。どうやら歴史的な経緯でこの形式が使われているようなのですが、なかなか厄介な形式のようです。

Mork の謎 Firefox Hacks 翻訳日記/ウェブリブログ

Mork の何が悪いのか?
1. Mozilla 以外には使われていない、独自仕様のデータフォーマット。
2. 仕様書がない (に等しい) ので解析が困難。
3. 開発者がすでに退社しており、継続的な開発・修正が困難。
4. ファイルの一部が破損したときに手作業での修復が困難。
5. 開発者の言によれば、「テキストファイル形式を使うのは馬鹿げている、と思ったがそうしろと命令されたから作った」(前出 WebArchive のページ)

これを扱うためのライブラリとしてCPANにFile::Morkというモジュールがあり、すでにこれを使ってスクリプトを書いた人もいるようなので*1、そのプログラムを参考(というか、ほとんどそのまま)にスクリプトを作ってみました。

use strict;use warnings;use Getopt::Long;use File::Mork;my $file;GetOptions("file=s" => \$file);unless ($file) { printf("\nUsage: perl $0 --file <file> \n"); exit;}my $mork = File::Mork->new($file, verbose => 1, byte_order => 'BE' ) || die $File::Mork::ERROR."\n";foreach my $entry ($mork->entries) { print $$entry{'LowercasePrimaryEmail'} . "\n" if $$entry{'LowercasePrimaryEmail'};# for debug# while (my($hkey, $hval) = each %$entry) {# printf("%s=%s\n", $hkey, $hval);# }}

デフォルトのままではうまくエンディアンが認識できずに、エラーが出てしまうので、エンディアンをbyte_order => 'BE'と言う風に直接指定しています。場合によってはこの部分をLEに書き換える必要があるかもしれません。このあたりも次のバージョンくらいからSqliteになっていったりするんでしょうかね。


byhsur at 23:37[4年前][3年前][2年前][1年前][1年後][2年後][3年後][4年後][5年後] |
こんな記事もあります 「Mork アドレス帳 hkey
コマンドプロンプトが起動できない(起動してもすぐにウィンドウが消えてしまう)時に確認すべきこと
MS の 基本認証廃止は 10 月 1 日から
メイリオ + Consolas の等幅フォントが欲しい
「OneDriveに移動」を削除する
コンテキストメニューから Skype を取り除く
レジストリから Windows 10 のデスクトップに PC を表示させる
50万円の漆塗り HHKB!!
オフラインファイルの設定をリセットする方法
新元号はレジストリの変更でテスト可能だった
古い Radeon に HDMI 接続したときの黒枠をユーティリティなしで解決する
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3217
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL:Yahoo! JAPAN IDでログイン

« :: »
Copyright © 2004-2023 by CLES All Rights Reserved.
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 .アーロンチェアのポスチャーフィットを修理(99701)
2 .年次の人間ドックへ(99110)
3 .福岡銀がデマの投稿者への刑事告訴を検討中(99101)
4 .三菱鉛筆がラミーを買収(98708)
5 .2023 年分の確定申告完了!(1つめ)(98679)
最新のエントリ
cles::blogについて
誰が書いてる?
最近行った場所
サイトポリシー
タグ一覧
検索ワードランキング

Referrers

    Powered by CLES
    Nucleus CMS v3.31SP3/w memcached
    21376742(W:7367 Y:1720 T:0841)
    cles::blogのはてなブックマーク数
    benchmark


    [8]ページ先頭

    ©2009-2025 Movatter.jp