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

PHPでメールを送信したいのですが、mb_send_mailがサーバーの環境にありません。
それでも、日本語送信するには、どうすればよろしいでしょうか?

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:サーバー メール 日本語 環境 HP
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● kn1967
●23ポイント

PHP: mail - Manual

mail関数でもヘッダー(第4引数)にてメッセージ本文で使っているキャラクタセットを指定してけば日本語のメールを送る事は可能ですよ。


マニュアルのサンプルでは

$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

となってますがHTMLではなくテキストの場合は

$headers .= 'Content-type: text/plain; charset=iso-8859-1' . "\r\n";

と読み替えてください。

iso-8859-1の部分はお使いのキャラクタセットにあわせてください。

◎質問者からの返答

ありがとうございます。

ただ、まだ、タイトルが化けます。。。


2 ● kn1967
●23ポイント

タイトルだけが文字化けしているのだとすれば

(1)メッセージ本文とは違うキャラクタセットを用いてしまっている

→ソースを見直してみてください。

(2)タイトル内に改行コードが含まれてしまっている

→文字列を変えて試してみてください。

→SJISなどでソースを書いているのであればEUCなどで書くようにしてみてください。

のではないかなどと思います。

PHP: mb_send_mail - Manual

mb_send_mailでは自動的に行ってくれる調整を手動で行うのは面倒ではありますが

原因を1つ1つ潰していくしか手はないので、あせらずじっくり調整していってください。


余談ですが、コメント欄を使用可能にしておくと、やりとりが楽になりますよ。

◎質問者からの返答

mail()のすぐ前に、$subject='テスト'とテスト的にやっても文字化けしてしまいました。。。

※内容はしません。

ちなみに、UTF-8ですが、これが悪いのでしょうか?

コメント欄は良く分かりませんでした。

すみません。。。


3 ● tezcello
●22ポイント

mail() では勝手にエンコードしてくれないのはご存知ですよね。

そして、subject は通常と違う形でエンコードしないといけないようです。(今お使いのメーラで、ソースを表示してみればわかります。)

http://www.atmarkit.co.jp/fnetwork/rensai/netpro04/netpro01.html

このページの「日本語でのヘッダの利用」参照


$subject='テスト';
$subject=mb_convert_encoding($subject, 'JIS', 'UTF-8'); // UTF-8 から JIS に変換
$subject=base64_encode($subject); // base64 でエンコード
$subject='=?ISO-2022-JP?B?'.$subject; // 文字コードとエンコードに関する記述を追加

こんな感じでしょうか(ごめんなさい。スクリプトは実行確認していません。)

UTF-8 -> JIS に変換していますが、subject内に記述するエンコードとして UTF-8 が使えるかが不明な為です。(特にケータイなどで)


ところで、mb_send_mail() が使えない環境で、mb_系関数を使ってもいいんでしょうか?

もしmb_系が全てダメなら、

となってしまうかも知れませんが。

◎質問者からの返答

日本語関連の関数が使えません。。。

自作は時間がかかりそうなため、オープンソースでご存知ありませんでしょうか?


4 ● phantazy
●22ポイント

mb_convert_encodingで"JIS"に変換してみてください。

関連質問


●質問をもっと探す●



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