SMTP接続でのPEARメール送信の差出人がsoftbankのみ表示さ
SMTP接続でのPEARメール送信の差出人がsoftbankのみ表示されなくて困っております。
require_once("Mail.php");
require_once("Mail/mimeDecode.php");
mb_internal_encoding('UTF-8');
mb_language("ja");
$params = array(
"host" => "***",
"port" => 587,
"auth" => true,
"username" => "***",
"password" => "***"
);
$mailObject = Mail::factory("smtp", $params);
$internal = 'utf-8';
$input = 'utf-8';
$target = 'ISO-2022-JP';
$recipients = "hoge@hoge.com";
$from_name = "日本語";
$from_name = mb_convert_encoding($from_name,$input,mb_detect_encoding($from_name));
$subject = "テスト";
$subject = mb_convert_encoding($subject,$input,mb_detect_encoding($subject));
$headers = array(
"To" => $from,
"From" => mb_encode_mimeheader($from_name,$target)."<***>",
"Subject" => mb_encode_mimeheader($subject,$target),
"Return-Path" => mb_encode_mimeheader($subject,$target)."<***>",
);
$body = "テスト";
$body = mb_convert_encoding($body,$target,mb_detect_encoding($body));
$mailObject -> send($recipients, $headers, $body);
なかなか説明が難しいので、手っ取り早くコードを書き出しましたが、
このphpファイルを使ってメールを送信しますと、
PCメール、WEBメール(hotmail)、携帯メール(DOCOMO,AU,SOFTBANK)
全て文字化けなく送信出来ている状況です。
上記のうち、差出人が受信側で表示されるのはDOCOMO以外全てだと思うのですが、
(もちろん携帯は機種によっては例外的に表示されないのもあるかと)
他のPCメールからは日本語の差出人が確認できるSOFTBANK機種でメールを
受信しますと、(差出人が設定されていない場合と同じ)メールアドレスのみが
表示されてしまう状態です。
前述のphpファイルは、SOFTBANK以外の差出人設定可能なPC,WEB,AUは
全て差出人の設定が確認できております。その問題のSOFTBANKも、差出人が
設定されないだけで、件名本文ともに文字化けせず、正常に受信が出来ています。
ネットで色々と探してみましたが、同様の状況が確認できず、
どなたかお力添えいただけましたら幸いかと思い、質問した次第です。
どうかよろしくお願いいたします。
お礼
ずっとお付き合い頂きまして、ありがとうございます。 ご指摘のとおり、データベースから持ってくるのではなく 送信用のファイルに直接 $body を記入したら 文字化けも変な所に変な物も入りませんでした。 (以下のソース) 原因はデータベースに入れる時に上手くいってないと、 原因の切り分けができました。 今度はデータベースに入力する所を検証してみます。 何日もお付き合いいただきましてありがとうございました。 本当に助かりました。 また、教えてくださいと投稿するかもしれないので よろしくお願い致します。 $sender = "***@***.net";//送信元 $recipients = "***@***.com";//送信先 $Subject = "テストで送信"; $body = "文字化けはどう\n改行してみました"; $params = array( "host" => "***.net", "port" => 587, "auth" => true, "username" => "***@***.net", "password" => "****" ); $mailObject = Mail::factory("smtp", $params); $mimeObject = new Mail_Mime('<br />'); $mimeObject -> setHTMLBody($body); $bodyParam = array( "head_charset" => "ISO-2022-JP", "html_charset" => "UTF-8" ); $body = $mimeObject -> get($bodyParam); $addHeaders = array( "To" => "$recipients", "From" => "$sender", "Subject" => mb_encode_mimeheader("$Subject") ); $headers = $mimeObject -> headers($addHeaders); print "<hr />".$body."body<br />"; $mailObject -> send($recipients, $headers, $body); if(send){ echo "OK"; } else{ echo "NO"; } メールの受信内容 【文字化けはどう 改行してみました】