重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PHPでのメール差出人名について

PHPのmb_send_mailでメール送信プログラムを書いています。
メールは送信されるのですが、メーラーで確認すると
差出人名(送信者)がうまく表示出来ません。

具体的には、
『▲▲サイトより送信』と表示させたいのですが、
『▲▲サイトより送信@レンタルサーバのドメイン名』
と表示されてしまいます。

下記がソースになるのですが、有識者の方いらっしゃいましたら
ご教授よろしくお願いします。

--------------------------------------------
//送信設定
mb_language("japanese");
mb_internal_encoding("euc-jp");
$from = mb_encode_mimeheader(mb_convert_encoding("▲▲サイトより送信","JIS","euc-jp"));
$head = "From: {$from}" . "\r\n" . 'X-Mailer: PHP/' . phpversion();

//送信実行
mb_send_mail($mail_to, $title, $message, $head);

A 回答 (4件)

メールアドレス風の文字列が入っているせいか、「現在、この回答はサポートで内容を確認中です」になってしまったので、再書き込みします。



ちょっと試してみましたが、mb_encode_mimeheader がメールアドレスの部分までMIMEエンコーディングしてしまいうようです。
(そのため、受信した側でMIMEデコードした結果を見ると、正しいヘッダのはずなのに変な処理をされているように見えますが、メールサーバ側で受け取った段階(MIMEエンコードされたヘッダ)では、From:ヘッダとして正しくメールアドレスが記述された状態ではなくなってしまってます)

これはmb_encode_mimeheader のバグ(というか仕様が腐ってる)んだと思います。

メールアドレスの記述はmb_encode_mimeheader を通さないように

$from = mb_encode_mimeheader(mb_convert_encoding("○○","JIS","euc-jp"))." <メールアドレス>";

とすればいけると思います。
    • good
    • 0

> 『日本語<hoge@domein.com>』と指定すると『"日本語<hoge@domein.com>"@サーバードメイン』



ちょっと試してみましたが、mb_encode_mimeheaderが「<hoge@domein.com>」の部分までMIMEエンコーディングしてしまうため、正しい From: ヘッダ形式にならないようです。
mb_encode_mimeheader のバグ(仕様が腐ってる)って感じでしょうか。

メールアドレス部を mb_encode_mimeheader 処理の外に出して、

$from = mb_encode_mimeheader(mb_convert_encoding("日本語","JIS","euc-jp"))." <hoge@domain.com>";

とすれば大丈夫かと思います。
    • good
    • 0

mb_send_mail()はバグなのか結構文字変換でトラブルが多いようです。


できれば使わない方がいいとおもいますよ。

そもそもご自身でmb_encode_mimeheader()やmb_convert_encoding()を
しているのですからmail()コマンドで十分いけます

またはPEAR::Mailなどでしょうか・・・
http://pear.php.net/manual/ja/package.mail.mail. …
    • good
    • 0

From: ヘッダに記述するのは、基本的に「メールアドレス」です。


ですが、質問者さんのコードでは、From:ヘッダにメールアドレスが入っていません。

そのため、メールサーバが「メールアドレスのドメイン部を省略しちゃったんだろう」と判断してドメイン部を付加しているのです。

From: 名前 <メールアドレス>

という形式にすれば、メールアドレスとは別に名前情報をFrom:ヘッダに埋め込むことができます。

この回答への補足

早速のご回答ありがとうございます。

確かにFromヘッダ指定を
『name<hoge@domein.com>』と指定すると『name』と表示される様になりました!
ですが、
『日本語<hoge@domein.com>』と指定すると『"日本語<hoge@domein.com>"@サーバードメイン』
と表示されてしまいます・・
どうやら日本語が悪さをしているようです。
文字化けも起こしていないことから、文字コードは問題無いと思うのですが。。

サーバー側で何か設定が必要なのか、プログラムで解決する問題なのか検討がつきません。
何かお心あたりはありませんでしょうか?

補足日時:2010/07/08 20:28
    • good
    • 0

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