Email2AddressBookプラグイン

Email2AddressBookプラグイン

Posted at May 18,2009 1:55 AM
Tag:[Email2AddressBook, MovableType, Plugin]

空メールを送信することで Movable Type のアドレス帳にメールアドレスが登録できるプラグインを公開します。

1.動作概要

以下に、空メールを送信してから、Movable Type のアドレス帳にメールアドレスが登録されるまでの動作概要を示します。

  • アドレス帳に自分のメールアドレスを登録してほしいユーザーは、パソコンや携帯などから空メールを、特定のメールアドレスに送信します(①)。空メールで送信するメールタイトルはプラグインで予め決めておき、それを送信ユーザーに伝えておきます。
  • スケジュールタスクから周期的に MailAdressSubscriber プラグインを起動し、メールをチェックします(②)
  • プラグインで設定したタイトルと同じタイトルが見つかった場合、該当のメールを処理します(③)
  • 処理したメールのメールアドレスに、アドレス帳登録確認メールを返送します(④)
  • 確認メールを受信したユーザーは、確認メールに表示されているリンクをクリックすることで登録が完了します(既存動作)(⑤)

以前、「Movable Type でメールマガジンを作る」というエントリーで、メールマガジン方式で自分のメールアドレスを送信してアドレス帳に登録する方法を紹介しましたが、「自分のメールアドレスが分からない人が多いので」という要望で、このような動作を行うプラグインを開発しました。

2.動作環境

動作環境として、スケジュールタスクの起動が必要です。また、下記の Perl モジュールが必要です。

Net::POP3
MIME::Base64
Email::Address

MT のメール系のプラグインやメール処理では、MIME::Parser がよく使われるので、最初はそれを利用しようと思いましたが、サーバ環境によって正常に動作しないケースが多いため、今回は利用しないことにしました。

Email::Address はレンタルサーバではインストールされていない可能性が高いので、CPAN でインストールするか、インストールが分からない場合は、「Source」を右クリックして、「名前を付けてリンク先を保存」を選択し、Address.pm という名前で保存します。あとはそのファイルを、Movable Type の extlib ディレクトリの下に Email ディレクトリを作ってその下に置けば動くと思います。

あと、Movable Type 4.2 以降の場合、環境変数で EnableAddressBook を有効にしてください。

3.Email2AddressBook プラグインのダウンロード

下記の Email2AddressBook.zip をクリックして、プラグインアーカイブをダウンロード。

2009.05.18 初版(α版です)
Email2AddressBook.zip

プラグインのご利用および質問に対する回答等について、ご支援・ご賛同くださる方からの寄付をお待ち申し上げます。

4.Email2AddressBook プラグインのアップロード・インストール

プラグインアーカイブを展開し、中にある Email2AddressBook フォルダごと、Movable Type のアプリケーションディレクトリの plugins ディレクトリにアップロード。

システム管理画面のプラグイン一覧で、「Email2AddressBook~」が表示されればインストール完了です。

プラグイン一覧

5.プラグインの設定

システム管理画面の「ツール」→「プラグイン」→「Email2AddressBook」→「設定」をクリックして、下記の項目を設定します。

  • ブログのID番号:アドレス帳を追加したいブログのID番号
  • POPサーバー:プラグインからアクセスするPOPサーバ
  • プロトコル(デフォルトはpop3):プロトコル
  • アカウント:メールのアカウント
  • パスワード:メールのパスワード
  • 登録検出用受信メールタイトル:空メールに設定するタイトル(注:半角英数のみ)
  • メールの削除:空メールを検出する処理でメールをどのように削除するかを選択。「選択されたメールのみ削除」を推奨。「すべてのメールを削除」を選択すると、空メールの有無にかかわらずスケジュールタスクで処理したPOPサーバ上のメールを削除します。「削除しない」を選択すると、POPサーバのメールは削除しませんが、手動で空メールを削除しておかないと次のスケジュールタスクで空メールが重複処理されます

プラグイン設定

とりあえず、設定したタイトルのメールを検出したら次のようなログを出すようにしています。

プラグイン設定

一応、手持ちの環境を使って、携帯からの空メール送信によって携帯のメールアドレスをアドレス帳に登録できることは確認しましたが、すべての環境で動作することを保障するものではありません。

関連記事
zenback
人気エントリー
トラックバックURL


コメント

こんばんわ^^

こちらのプラグイン使わせて頂きました。
ですが、期待する動作してないので質問させてください。

POP サーバには Gmail の POP サーバを指定して TRY してみたのですが、記事を読む限り Gmail 宛てに空メールを送ると、送信元( 携帯 )に確認メールが届くと理解してますが届きませんでした。
また、ログにもスケジューリングされた形跡がないようです。
またまた、エラーログが出力されたことがありまして、Email2AddressBook.pl 内の 68 行目でエラーしてまして、サーバに接続できてないようでした。


1. cron を使用して run-periodic-tasks を定期実行するということでよかったですか!?
2. 空メール送信先は Gmail だとダメでしょうか。

環境は MT4.24 で、空メールタイトルには 'MT-MEMO' としてます。

お手数ですがよろしくお願いいたします。

[1] Posted by bzbell logo : May 20, 2009 10:56 PM

>bzbellさん
こんばんは。
ご質問の件ですが、1.はその通り(TeraTerm等が利用可能であれば、cronではなく、ダイレクトにrun-periodic-tasksを起動してもOKです)で、2.の Gmail は今のところNGです。情報不足ですいません。

ちなみに Gmail の POP サーバには SSL でアクセスする必要があるので、Net::POP3::SSLWrapper を追加して、Email2AddressBook.pl の内容に青色部分を追加する必要があるようです(動作は未確認)。

…前略…
use MT;
use MT::App;
use Net::POP3::SSLWrapper;
…中略…
sub _regist_email {
…中略…
  my $delete = $plugin->get_config_value('e2a_delete_mail');
 
  pop3s {
  my $mpop  = Net::POP3->new($server, Port => 995) or die "Can't not open server.";
…中略…
  }
  $mpop->quit();
  };
}
…後略…

http://search.cpan.org/~tokuhirom/Net-POP3-SSLWrapper-0.01/lib/Net/POP3/SSLWrapper.pm

それではよろしくお願い致します。

[2] Posted by yujiro logo : May 23, 2009 1:43 AM

こんにちわ^^

返答ありがとうございます。
Gmail は SSL が標準なんですかぁ。だから認証でエラーしてたんですね(; ̄∇ ̄A

教わったモジュールを使ってみようと思ったのですが、Net::POP3 の使い方見たら、サーバ上にあるメールすべてを取得しちゃうようなので、Gmail だと根本的にマズいことが分かりました。

未読のメールのみ取得できればいいんですけどね (●´∀`●)
Net::IMAP::Simple だと未読メールのみ取得できるようでした。

お忙しいところありがとうございました。

[3] Posted by bzbell logo : May 23, 2009 2:53 PM

「Movable Type でメールマガジンを作る」でコメントさせていただいたあひるです。
プラグインとしてつくっていただきありがとうございます。

おおっー!とさっそく使おうとしましたが「スケジュールタスクから周期的に MailAdressSubscriber プラグインを起動し、メールをチェックします(②)」でまずおろおろし、さらに空メール用のアドレス設定を間違えていたのに気がつかず四苦八苦。
やっとできるようになりました\(^o^)/

すぐにお礼のコメントが入れられなくてすみませんm(__)m

ただ、cronから不定期に
/virtual/hogehoge/cron.sh: line 3: 25743 Killed /usr/bin/perl ./tools/run-periodic-tasks
のようなメールが来ます。
これは無視してもいいのでしょうか。

また、MTで複数のブログを運営している場合はどれか一つしか指定できませんか。

たびたびお手数をおかけしますがよろしくお願いいたます。

[4] Posted by あひる : May 23, 2009 11:22 PM

>bzbellさん
こんにちは。
情報ありがとうございました。
未読分はその通りで、そのため削除オプションを設けていますが、α版は空メール専用のメールアドレスを使うことを想定してもらった方が良いかもしれません。
Net::IMAP::Simple::SSLもあるようなので、モチベーションがあがったら確認してみたいと思います。

>あひるさん
こんにちは。
コメントありがとうございます。
うまく動作したようで良かったです。
なおこのプラグインは今のところ、システムでひとつしか対応していません。
それではよろしくお願い致します。

[5] Posted by yujiro logo : May 25, 2009 1:39 PM

はじめまして。いつも見させていただいています。

MTOS4.261にインストールして利用しようと考えていたのですが、
システムメニューのプラグイン一覧画面で「読み込みに失敗しました」
という表示がでてきました。

MTOSでは利用できないプラグインなのでしょうか?

[6] Posted by ふくころ : August 18, 2009 6:05 PM

>ふくころさん
こんばんは。
ご質問の件ですが、本プラグインはMTOSでも動作します。
確認ですが、システム管理画面の「ツール」→「ログ」で以下のようなメッセージが出力されていますでしょうか。

プラグインでエラーが発生しました: ~/plugins/Email2AddressBook/Email2AddressBook.pl Can't locate Email/Address.pm in @INC (@INC contains: ~/plugins/Email2AddressBook/lib ~/extlib ~/extlib lib C:/usr/site/lib C:/usr/lib .) at ~/plugins/Email2AddressBook/Email2AddressBook.pl line 54. BEGIN failed--compilation aborted at ~/plugins/Email2AddressBook/Email2AddressBook.pl line 54. Compilation failed in require at lib/MT.pm line 1293.

そうであれば、2項のEmail::Addressがインストールされていないので、説明にしたがってインストールしてください。2項の説明にある「Source」をクリックした先のURLは下記です(以下のURLで表示された内容をAddress.pmというファイル名で保存します)。

http://cpansearch.perl.org/src/RJBS/Email-Address-1.889/lib/Email/Address.pm

設定方法が不明な場合はお手数ですが再度ご連絡ください。
それではよろしくお願い致します。

[7] Posted by yujiro logo : August 20, 2009 10:14 PM

いつも書籍とあわせて非常に参考させていただいています。
現在、こちらのプライグインを使用して空メールでアドレス帳への登録機能の導入を試みている者です。
バージョンがMTOS 5.02なのですが、使用は不可能でしょうか??
cron実行時に、

'Email2AddressBook'の実行中にエラーが発生しました: Can't locate object method "errtrans" via package "MT" at /home/lady-killer/www/mt/plugins/Email2AddressBook/Email2AddressBook.pl line 111.

というログが残っていて、うまく行きません・・・
お忙しい中恐縮ですが、宜しく御願いいたします。

[8] Posted by takuyan : November 8, 2010 11:21 PM

素晴らしいプラグインの公開をありがとうございます。
現在システムのプラグイン設定からブログIDを入力しますが、各ブログでメール登録をするにはどのようにすればよろしいでしょうか

宜しくお願い致します

[9] Posted by pon : December 1, 2011 1:58 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)