人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JPHPMailerを使って作ったメールフォームがあります。
http://www.php-seed.net/blog/archives/48

非常に快適に使えているのですが、一部の環境で「ヘッダが化ける」という現象に悩まされています。

私の環境(Mac Mail.app)では正常に受信できているのですが、その環境(Vista+Office2007)では、サブジェクトの途中で切れてしまい、本文にはメールヘッダの一部が以下のように表示されてしまっています。

=?iso-2022-jp?B?GyRCITwlYBsoQg==?=
Date: Thu, 31 Jan 2008 22:14:44 +0900
From: =?iso-2022-jp?B?
<以下略>

文字コードを UTF8からエンコードしているので、それが原因かと思い、EUCに直してからかけるなど、工夫しているのですがどうにも原因が分かりません。

また、稼働させるサーバーを変えると正常に動作したりもします。
サーバーに原因があるのか、プログラムに原因があるのか、メールソフトに原因があるのかが全く分からないのですが、原因らしきものにお心当たりがある方、または原因を切り分けるために行える調査などにつきまして、アドバイスをいただけると幸いです。

●質問者: selter
●カテゴリ:ウェブ制作
✍キーワード:?B EUC ISO-2022-JP JAN MAC
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tezcello
●35ポイント

メールのヘッダ部がこんな感じになっていませんか?(「表示」->「ソース」で見る事ができると思います)

Subject: =?iso-2022-jp?B?.....

=?iso-2022-jp?B?GyRCITwlYBsoQg==?=

Date: Thu, 31 Jan 2008 22:14:44 +0900

From: =?iso-2022-jp?B?

現象の起きているマシン、起きていないマシンで、ソースに差があるとしたら、別な所に原因があるかもしれません。


また、全く同じ件名でもサーバによって差があるのですか?

MTA が勝手に改行を加えるとは思い難いのですが...

何かの条件がそろうと、JPHPMailer が悪さをするって事は?

(一般的な折り返し文字数の処理がSubjectにも適応されていると空行が入ったりして...)

◎質問者からの返答

なるほど。サブジェクトが改行されてしまっているのですね。

となると、サブジェクトに問題があるのでしょうか。。。もう少し調べて見つつ、サブジェクトを変えてみたりしますね。

ご回答ありがとうございました。


2 ● KUROX
●35ポイント

jphpmailer.php

198行目のencodeMimeHeaderの関数

コメントとソースを見る限りでは、サブジェクトが長い文字の場合、

改行が入るようになってるようですが・・。

------

改行コードは、,$linefeed="\r\n"で定義されてます。

------

規格を調べてみると、

http://www.futomi.com/subroutine/encodesubject.html

>RFC2047では、エンコードされた状態で、全体の文字数が(「Subject: 」を含めて)

>76文字を超える場合には、改行する必要があります。

改行コードもCRLFなので正しいですね。

-------

短いSubjectしか使わないのなら、

jphpmailer.phpの改行を入れる処理を書き換えて様子を見てみては?

-------

とりあえず発生条件は、長い日本語文字列のSubjectに間違いがないと思うので

その条件で再現させてから、調査してみてください。

◎質問者からの返答

ソースを解析していただいたようで、ありがとうございます。

そしたら、改行をしないようにプログラムを改造したりしたらよいのでしょうかね。。

ひとまず、様子を見つつ、いろいろと試行錯誤してみますね。ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ