読者です 読者をやめる 読者になる 読者になる

SquirrelMailの日本語パッチ

SquirrelMail

ブログを引っ越したので、忘れないようにここにも書いておこう。
SquirrelMailで日本語の設定をすると、きちんと日本語でメールを
送信することができます。しかし、日本語が一切入っていない
メールでもISO-2022-JPMIME設定してしまうようです。
これでは例えば外国人とのやりとりで支障をきたしてしまう場合があります。
実際、私の知り合いで、あなたから受け取ったメールを開こうとすると
パソコンがマルチリンガル環境をインストールしようとするとクレームを
うけたりしていたようです。そこで、日本語が入っていない場合は
us-asciiでメールを送るようにしたパッチを公開します。
使い方としては
http://www.squirrelmail.jp/
から1.4.5をダウンロードし、
http://www.yamaai-tech.com/~masato/Download/
のパッチを当てて、それから以下のパッチを当ててください。

diff -uNr class.org/deliver/Deliver.class.php class/deliver/Deliver.class.php
--- class.org/deliver/Deliver.class.php	2005-07-14 13:50:01.000000000 +0900
+++ class/deliver/Deliver.class.php	2006-05-08 15:39:57.205027378 +0900
@@ -49,7 +49,7 @@
         $raw_length = 0;
         $reply_rfc822_header = (isset($message->reply_rfc822_header)
                              ? $message->reply_rfc822_header : '');
-        $header = $this->prepareRFC822_Header($rfc822_header, $reply_rfc822_header, $raw_length);
+        $header = $this->prepareRFC822_Header($rfc822_header, $reply_rfc822_header, $raw_length, $message);
 
         if ($stream) {
             $this->preWriteToStream($header);
@@ -377,7 +377,7 @@
      *
      * @return string $header
      */
-    function prepareRFC822_Header($rfc822_header, $reply_rfc822_header, &$raw_length) {
+    function prepareRFC822_Header($rfc822_header, $reply_rfc822_header, &$raw_length, $message) {
         global $domain, $version, $username, $encode_header_key, $edit_identity, $hide_auth_header;
 
         if (! isset($hide_auth_header)) $hide_auth_header=false;
@@ -494,9 +494,12 @@
                                          $rfc822_header->content_type->type1;
         if (count($rfc822_header->content_type->properties)) {
             foreach ($rfc822_header->content_type->properties as $k => $v) {
-                if ($k && $v) {
-                    $contenttype .= ';' .$k.'='.$v;
-                }
+	      if ($k && $v) {
+		if (eregi("charset",$k) && mb_detect_encoding($message->body_part)=="ASCII"){
+		  $v="us-ascii";
+		}
+		$contenttype .= ';' .$k.'='.$v;
+	      }
             }
         }
         $header[] = $contenttype . $rn;