PHPでメール送信するとsubject(件名)が途中で切れる(mb_encode_mimeheader)

PHPでメール送信する際に、件名が途中で切れてしまい、本文(body)にメールヘッダーが入ってしまう事があります。

これの対策として、改行コードをCRLFからLFにするとヘッダが本文に入ってしまうことが無くなると書かれているページが多かったのですが、実際にやってみたら今度はタイトルの途中から文字化けしてしまう現象に見舞われました。

タイトルが途中から化けてしまうのは、フォルダリングされたタイトルを組み立てる際に、余計なスペースが入ってしまうからだと思うのですが、これがbase64のencode/decodeで生じるものなのか、フォルダリングによって生じるspaceが混入するのかは不明。

色々試したのですがうまくいかず、とりあえずフォルダリングしないようにする方向で処理しました。

つまり、mb_encoding_mimeheaderを使わずに、自分でsubjectをbase64化して’encoded-word’で規定された形にしちゃう。

ただ、あんまり長い件名(subject)を送信しようとすると、メールリレーの途中で拒否られるかもなのでこの対策で万全とは言えないようです。

何か考えなくちゃ。。。