www.kkoba.com  » kkobaのblog

2004年09月01日

[MT3.0] お知らせ本文送信時のHTMLタグ除去

[MT3.0]やること備忘録に書いた予定通り、お知らせ送信で本文を送った時のHTMタグ除去に挑戦して見た。

1. 目的

もともとこの機能を付加しようと思ったのは、[MT3.0]なぜMovableTypeをいじってるのかに書いたように、「企業内で流通するメールマガジンのバックエンドとしてMovable Typeを利用する」ことを検討しているためだ。と言っても、個人的に勝手に検討してるだけだけど。

「Movable Typeで記事を書いて、お知らせ送信を使って読者にメールマガジンを配送する」という手順を考えていた。

メーラーを使ってメール送信して、その後送信した文書をMovable Typeの中で整形するのに比べて、以下の利点がある。

  1. Movable Typeのお知らせはきちんとbccを使っているので、メーラーでうっかりtoに宛先を露出するというの送信ミスを防ぐことができる。企業内のみの利用でも、ここらへんは気を使いたい。
  2. メールマガジンの送信元として、普段使っているのとは違うアドレスを使いたい時、ついつい普段使っているアドレスを使ってしまうと言う、ミスを防ぐことができる。

2. 問題点と結果

HTMLタグの除去はできたが、当然のことながらレイアウトが無茶苦茶になる。

  1. MT::I18N::wrap_text()の72文字目でのテキスト折り返しが、いまひとつ上手く動かない。
  2. <ol>や<ul>をテキストベースで整形したり、かなりインテリジェントに作りこまなければならない。
  3. <a href="http://www.kkoba.com/">のようなタグは、HTML内の文字列を書き出さなければならない。

この件は、断念しました。

3. HTMLタグの除去のための/CMM.pmの修正

当初の目的は実現できなかったが、作業結果の産物として、以下だけは出来たので、一応書き残す。 /lib/MT/App/CMM.pm を修正すれば良い。

  1. HTMLタグの除去
  2. <a href="http://www.kkoba.com/">のURL部分の取り出し
use MT::Sanitize;  # この行を最初の方に書き加える

sub send_notify {  # send_notify関数の中を修正
    ...
#   $body .= MT::I18N::wrap_text($entry->text, $cols);
                   # 上の行をコメントにして下記のように修正
    my $sbody = MT::Sanitize->sanitize($entry->text, 'a href');
    $sbody =~ s/<a\s+href=\"//g;
    $sbody =~ s/\">/\n/g;
    $sbody =~ s/<\/a>//g;
    $body .= $sbody;
    ...
}

投稿者 かつ : 2004年09月01日 02:07

この記事のトラックバックURL

トラックバック一覧 (0件)

コメント一覧 (0件)

新規にコメントする




情報を登録する?



年間カレンダー
2007
12
 
11
1
10
1
09
1
08
 
07
 
06
 
05
 
04
3
03
7
02
3
01
4
2006
12
1
11
1
10
1
09
1
08
1
07
1
06
1
05
2
04
1
03
1
02
1
01
1
2005
12
1
11
1
10
4
09
2
08
1
07
2
06
3
05
7
04
4
03
8
02
6
01
10
2004
12
8
11
14
10
10
09
20
08
12
07
2
06
4
05
2
04
1
03
1
02
1
01
1
2003
12
1
11
1
10
1
09
1
08
1
07
1
06
2
05
2
04
3
03
3
02
7
01
3
2002
12
5
11
3
10
3
09
4
08
7
07
6
06
10
05
7
04
4
03
4
02
8
01
8
2001
12
6
11
12
10
18
09
6
08
 
07
 
06
 
05
 
04
 
03
 
02
 
01
 
2004年09月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

サイト内の検索

このBlogのライセンス