プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
テキストファイルからメールタイトルと本文を読み込みしてメール送信しているのですが
テキストファイルには以下のようになっております。
タイトル
本文<br>本文
2行にまとまってますのでそれぞれ読み込みして整理してメール送信するのですが
何故かタイトルの先頭にハテナマークが出てしまってどうしても消せません。
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$mail_title = file("mail_data.txt");//文字コードUTF8
$mail_title2 = trim($mail_title[0]);
//print $mail_title2 >> タイトルとハテナなしでちゃんと表示されます。
mb_send_mail(省略・,$mail_title2)
で送信すると「?タイトル」となってしまいます。
ちなみに文字化けは一切ありません。ハテナがおおいだけです。また
$mail_title2 = 'タイトル';と指定するとハテナがなくちゃんとしたメールになります。

$mail_title2をアンエスケープや文字コード変換などして見ましたがだめでした。
お手上げ状態でどなたかお願いします。

A 回答 (2件)

"mail_data.txt"ファイルの先頭にBOMが付いているのではないでしょうか。


BOM無しで作成してください。
BOM付きでしか作成できないのであれば、先頭3バイト(1文字)を読み飛ばす。
    • good
    • 0
この回答へのお礼

秀丸で確認したらBOMついておりました。
本文の方だと2行目ですので問題なく出ておりましたのでおそらくそれが原因かもしれません。
再度テストして見ます。
ありがとうございます!

お礼日時:2016/04/04 23:19

経験則として、mb_send_mail()は中途半端な仕様でトラブル時に細かい調整が利かないですね


基本的にはオリジナルのmail()で任意にエンコードした方が結果はよいようです。
また公式マニュアル自体がもうめんどくさくて丸投げしているように
PEARなどのライブラリに頼った方がよいかもしれません
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!