標準スニペットのContactFormから送ったメールが文字化けしてしまいます。

(1/7) > >>

naoya:
PHPどころかシステムにも疎い初心者です。
標準スニペットのContactFormから送ったメールが文字化けしてしまいます。多分、文字コードの問題だと思うのですが、これを回避する方法はありませんか?
または、他のスニペットで回避出来るものはありませんか?
サーバーはxreaを使用しています。宜しくお願い致します。

takumi:
とりあえず、
Code:

if (mail($to, $subject, $body, $headers)) {
って書いてある所を
Code:

if (mb_send_mail($to, $subject, $body, $headers)) {
として試してみてください。

ちなみに、これだけだと不完全な状態です。
とりあえずこれを試してみて、送られてきたメール本文とヘッダー情報を教えてください。
海外製CMSでは、メール送信で文字化けはデフォだと思ってください。 ;D
mail()を使ってるだけなので、文字化けの修正は簡単だと思います。
自分はまだそこまでサイトを構築する状態じゃないので、試していませんが問題視してません。

ZeRo:
mb_send_mailの前に以下も追加しちゃってください。
Code:

mb_language("ja");


ついでに多分FROMが日本語だと化けると思うので、したのように修正しないと駄目かも
Code:

$headers = "From: ".mb_encode_mimeheader($from)."<$from_email>\r\n";

あ、ちなみにmb_languageはheadersより前の行に入れないと駄目です。

実際やってみてないのですが、多分、本文と題名はmb_send_mailでいけると思います。

naoya:
ご教授頂き有り難うございます。
さっき、打ち合わせから帰って来れたので、早速試させて頂きました。
Quote from: takumi on Mar 16, 2006, 03:34 AM

Code:

if (mb_send_mail($to, $subject, $body, $headers)) {
として試してみてください。
で、本文で日本語が通るようになりました。
また、Fromの部分は
Quote from: takiz on Mar 16, 2006, 04:42 AM

Code:

$headers = "From: ".mb_encode_mimeheader($from)."<$from_email>\r\n";


で日本語表示にすることができました。ただ、
Code:

mb_language("ja");

に変更するとエラーが出ます。入れるところを間違ったのでしょうか…
Code:

if (mb_send_mail($to, $subject, $body, $headers)) {
のところを
Code:

if (mb_language("ja");mb_send_mail($to, $subject, $body, $headers)) {
にすると言う意味ですよね?

一応、テストメールでは文字化けは無くなったので問題はなくなったのですが、もし間違っている様なご指摘を頂ければ幸いです。

私の様な初心者に分かりやすく教えて頂き感謝しています。有り難うございました。

takumi:
Quote from: naoya on Mar 16, 2006, 01:07 PM

Code:

if (mb_send_mail($to, $subject, $body, $headers)) {
のところを
Code:

if (mb_language("ja");mb_send_mail($to, $subject, $body, $headers)) {
にすると言う意味ですよね?

残念ながら使い方が違います。
takizさんが言ったのは、mb_send_mai()が含まれている行の前って意味です。
うちのサーバーはこの設定をしなくてもmb関数が日本語設定になってるので問題ないのですが、mb_send_mail()関数はmb_language()を参照して言語を決るので、この設定がされてないサーバーでは、スクリプト側で言語設定しないと文字化けの問題が解消されない場合があります。
ただ今回はmb_language()を設定しなくとも問題無くメールが送信されたようなので、設定しなくとも良いかも知れません。
加えるならスクリプトの先頭の方で問題無いと思います。

今思い出したんですが、xreaサーバーってmb_language()の記述は必須だったような?
mamboの文字化け対策で使った記憶があります。
でも、今回は大丈夫みたいなんでxreaでもサーバーによって違うみたいですね? ???

Navigation

[0] Message Index

[#] Next page