2004年09月01日
[MT3.0] お知らせ本文送信時のHTMLタグ除去
[MT3.0]やること備忘録に書いた予定通り、お知らせ送信で本文を送った時のHTMタグ除去に挑戦して見た。
1. 目的
もともとこの機能を付加しようと思ったのは、[MT3.0]なぜMovableTypeをいじってるのかに書いたように、「企業内で流通するメールマガジンのバックエンドとしてMovable Typeを利用する」ことを検討しているためだ。と言っても、個人的に勝手に検討してるだけだけど。
「Movable Typeで記事を書いて、お知らせ送信を使って読者にメールマガジンを配送する」という手順を考えていた。
メーラーを使ってメール送信して、その後送信した文書をMovable Typeの中で整形するのに比べて、以下の利点がある。
- Movable Typeのお知らせはきちんとbccを使っているので、メーラーでうっかりtoに宛先を露出するというの送信ミスを防ぐことができる。企業内のみの利用でも、ここらへんは気を使いたい。
- メールマガジンの送信元として、普段使っているのとは違うアドレスを使いたい時、ついつい普段使っているアドレスを使ってしまうと言う、ミスを防ぐことができる。
2. 問題点と結果
HTMLタグの除去はできたが、当然のことながらレイアウトが無茶苦茶になる。
- MT::I18N::wrap_text()の72文字目でのテキスト折り返しが、いまひとつ上手く動かない。
- <ol>や<ul>をテキストベースで整形したり、かなりインテリジェントに作りこまなければならない。
- <a href="http://www.kkoba.com/">のようなタグは、HTML内の文字列を書き出さなければならない。
この件は、断念しました。
3. HTMLタグの除去のための/CMM.pmの修正
当初の目的は実現できなかったが、作業結果の産物として、以下だけは出来たので、一応書き残す。 /lib/MT/App/CMM.pm を修正すれば良い。
- HTMLタグの除去
- <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 年 |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 年 |
|
||||||||||||
| 2005 年 |
|
||||||||||||
| 2004 年 |
|
||||||||||||
| 2003 年 |
|
||||||||||||
| 2002 年 |
|
||||||||||||
| 2001 年 |
|
||||||||||||
| 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のライセンス
Powered by Movable Type 3.17-ja