文字化け問題についての対処方法とは?
- フォームメール送信の文字化けについての対処方法を教えてください。現在、UTF-8で統一された環境でメールフォームを使用していますが、送信されるメールのタイトルや本文が文字化けしてしまいます。原因と対処方法を教えてください。
- メールフォームを設置してメールを送信すると、受付確認メールや問い合わせ報告メールのすべてが文字化けしています。文字コードはUTF-8で統一されており、apacheの設定も行っていますが、問題が解消されません。どのようにすれば文字化けの問題を解決できるでしょうか。
- メールフォームの確認画面では文字化けの問題は発生せず、メールも正常に届くことが確認されています。しかし、送信されるメールのタイトルから本文に至るまでが文字化けしており、読むことができません。この文字化けの問題を解決する方法はありますか。
- ベストアンサー
perl フォームメール送信の文字化けについて
フォームメール送信の文字化けについてお教え下さい。 よろしくお願い致します。 まずは環境より申し上げます。 環境 xampp-win32-1.7.7-VC9 同封 apache2.2.21 php5.3.8 perl 同封されているもの ----------------------------- xmailサーバーも動いています。 内部、外部、外部から外部、ともに正常に送受信できています。 以前はANHTTPDとperlとsendまね~るで問題なく動いていましたが このたびPHPが必要になりましたので以前のperlをアンインストールしてXAMPPをインストールしました。 以前からの自作のメールフォームを設置してメールを送信すると 受付確認メールと問い合わせ報告メールのすべてが文字化けしています。 一応 文字コードはUTF-8で mail.html、 perlプログラム、ともに統一しています。 apacheのhttpd.confの中にはAddDefaultCharset・・・の設定項目がなぜかありませんので apacheについては文字コードの設定などはおこなっておりません。 症状ですが メールフォームに入力して確認ボタンを押すと現れる確認画面は 文字化けしておりません、高崎、申す、表示という文字も化けていません。 このあと送信ボタンを押すと メールは宛先へ正常に届きますが タイトルからすべてが文字化けで読む事はできません。 原因探しが三日くらい続き、気になって寝られません。 ひろいあつめて書いたコードですが、 よろしくお願いいたします。 # MIMEエンコード $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($FORM{'name'}); $mail_subject = mimeencode($FORM{'subject'}); # 文字コードの変換 $body = jcode::jis($user_owner); # メールヘッダーの生成 $header = <<END; To: $mail_to From: $mail_from<$FORM{'email'}> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP # サーバー出力 print <<END; Content-type: text/html; charset=utf-8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> # メールの送信 open(MAIL, "| $SENDMAIL -i -t -f $FORM{'email'}") or die("エラー:sendmailへのパイプが開けません"); print MAIL $header, $body; close MAIL; 部分的で分かりにくいかもしれませんが どなたか どうぞよろしくお願いいたします。
- see-sky
- お礼率66% (6/9)
- Perl
- 回答数2
- ありがとう数13
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> # MIMEエンコード > $mail_to = mimeencode($MAILTO); > $mail_from = mimeencode($FORM{'name'}); > $mail_subject = mimeencode($FORM{'subject'}); > > # 文字コードの変換 > $body = jcode::jis($user_owner); 先頭が小文字の jcode は、UTF-8 をサポートしていないので変換できません。また、mimeencode も mimew.pl のものだとしたら、やはり UTF-8 はサポート外だと思います。
その他の回答 (1)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
メールは必ずiso-2022jpで送らなければならないこと メールヘッダは、ASCII文字イガイはBACE64エンコードしなければならない 本文も含め一行64文字以下でないとならない ( http://www.akanko.net/marimo/data/rfc/rfc2045-jp.txt ) ここは理解されていますか??
お礼
お答えありがとう御座います。 何年も前に作ったもので忘れておりました。 プログラムができるまでメールフォームは止めます。 昔のようにまた本を開いて楽しみに作ります。 ありがとう御座いました。
関連するQ&A
- Perlからメール送信で文字化け
Perl5.8からsendmailを使ってメール送信しています。 髙や﨑が入ると文字化けします。文字化けしないようにする方法を教えてください。 #!/usr/bin/perl require 'jcode.pl'; require 'mimew.pl'; $sendmail = '/usr/lib/sendmail'; print"Content-type: text/html\n\n test\n"; if (!(open(OUT,"| $sendmail -t -i -f xxxx\@hogehoge.co.jp"))) { ; } print OUT "To: xxxx\@hogehoge.co.jp\n"; print OUT "From: xxxx\@hogehoge.co.jp\n"; print OUT "Reply-To: xxxx\@hogehoge.co.jp\n"; $subject = "サブジェクト 髙﨑"; $subject = &mimeencode($mail_subject); print OUT "Subject: $mail_subject\n"; print OUT "Mime-version: 1.0\n"; print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n"; print OUT "Content-Transfer-Encoding: 7bit\n\n"; $honbun = "メール本文 髙﨑"; &jcode'convert(*honbun, 'jis'); print OUT "$honbun\n"; close(OUT);
- ベストアンサー
- Perl
- phpフォームで携帯へメール送信した場合の文字化け
過去のよく似た事象を検索しましたが解決しなかったので 質問します。よろしくお願いします。 携帯電話のメールアドレスに送信するWEBフォームをphpで 作成したいのですが、文字化けが直らずに困っています。 コードは次のような感じです。 PCへのメールは文字化けせず、DoCoMoへ送るとsubjectは正常で本文が化けます。 またauとvodafoneへ送るとすべて化けます。 $to = "$_REQUEST['$email']"; $from = "info@aaa.bbb"; $subject = "テスト送信"; $message = "テストメールです" . $headers ='From: '. $from . "\r\n" .'MIME-Version: 1.0' . "\r\n" .'Content-Type: text/plain; charset=iso-2022-jp' . "\r\n" .'Content-Transfer-Encoding:7bit' . "\r\n" .'X-Mailer: PHP/' . phpversion(); if(mail($to, $subject, $message, $headers)==TRUE) print("メールを送信しました"); else print("メール送信に失敗しました"); 動作環境はSunOS5.7、Apache2.0、php5.0.3です。 コードはEUCで書いています。
- ベストアンサー
- PHP
- PHPをつかったメール送信時の文字化け
OS :FreeBSD4.8 PHP4.3.2 Apache2 を使用してるものです。 PHPでメール送信のフォームを作成して実際に送ってみるとサブジェクトがどうしても文字化けします。 $subject = i18n_mime_header_encode(i18n_convert($subject, "JIS")); mail($too, $subject, $memo, $ff.$from); 上記のように変換コード関数をいれると Fatal error: Call to undefined function: i18n_mime_header_encode() in /usr/home/mmiyagi/htdocs/send.php のようにエラーがでます。 php.ini設定不足でしょうか?
- ベストアンサー
- PHP
- 問い合わせフォーム 文字化け
ホームページに問い合わせページを作るためkent-webさんのPOST-MAILのフォームを使用させてもらいました。 http://www.kent-web.com/data/postmail.html チェックモードでの確認は問題なかったんですが、 テストで登録しようとしたらエラー表示が文字化けします。 それと、確認画面の次のページにいこうとすると、 「Undefined subroutine &main::mimeencode called at postmail.cgi line 483. 」 というエラーが出ます。 ちなみに483行目は、 # MIMEエンコード if (-e $mimew) { require $mimew; $subject2 = &mimeencode($subject); if ($in{'name'}) { $from = &mimeencode("\"$in{'name'}\" <$email>"); } else { $from = $email; } } else { $subject2 = &base64($subject); if ($in{'name'}) { $from = &base64("\"$in{'name'}\"") . " <$email>"; } else { $from = $email; } } charsetがutf-8なのが問題なのかと思い、s-jisに変えるとHTML自体が文字化けしてしまいました。 原因、対処法を教えてください。お願いします。
- ベストアンサー
- CGI
- メールを送信しました。と出るのにメールが届きません。
下記のように設定したのですが、どこがいけないのでしょうか? $SENDMAIL = '/usr/sbin/sendmail'; $MAILTO = '<自分のメールアドレス>'; if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } # フォームデータの復元 foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); # 文字のデコード $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } # MIMEエンコード $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($FORM{'name'}); $mail_subject = mimeencode($FORM{'subject'}); # 文字コードの変換 $body = jcode::jis($FORM{'msg'}); # メールヘッダーの生成 $header = <<END; To: $mail_to From: $mail_from<$FORM{'email'}> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/html; charset=ISO-2022-JP END # メールの送信 open(MAILTO, "| $SENDMAIL -i -t -f $FORM{'email'}") or die("エラー:sendmailへのパイプが開けません"); print MAIL "$header, $body"; close MAIL; # サーバー出力 print <<END;
- 締切済み
- CGI
- メール送信で文字化け
メール送信で件名が文字化けしてしまいます。 カテゴリ内には同様の質問もあるようですが、 解決できないので、投稿しました。 以下のようなコードです。 $to= "aa@aa.aa"; $from= "bb@bb.bb"; $subject= "メール送信テスト"; $headers= "From:$from"; $subject = i18n_mime_header_encode(i18n_convert($subject, "JIS")); $name= $_POST["name"]; $sub= $_POST["sub"]; $body= $_POST["body"]; $message="$name \n $sub \n $body \n"; if(mail($to, $subject, $message,$headers)){ echo "送信完了"; }else{ echo "送信エラー"; } ちなみに、 $subject= base64_encode($subject); とかもやってみたけど駄目でした。 よろしくお願いします。
- ベストアンサー
- PHP
- perlのメールフォームが文字化け
perlのメールフォームが文字化けして困っています。 メールフォームの出力HTMLは、shift_jis それを、ISO-2022-JPに直して、送信しています。 また、jode.pl、mimew.plを使用しています。 何が原因で文字化けしているのか、教えていただけないでしょうか? よろしくお願いします。
- ベストアンサー
- Perl
- Perl+UTF8で文字化け
以下の環境にてメール送信プログラムを作成していますが、 ありがちな文字化け、且、ボディーが表示されない不具合が発生しています。 サーバ:linux apache レンタルサーバ ※Encode.pm、Jcode.pm無し。モジュールインストール不可。 Perl version: 5.006001 ソースエンコード:utf-8 自分の解釈としてはutf8で記述しているので、 charset=utf-8にしておけば、 MIMEエンコードさえしてやれば 表示できると考えているのですが、 やはり甘い考えなのでしょうか? また、同サイト質問NO2868794も参考にさせていただきましたが、上手くいきません。 以下ソース(エンコード:utf-8) use utf8; use MIME::Base64; use POSIX; ※アドレス表記はこのサイトの投稿チェックに引っかかるので省略します。 my $to = 'XXXX@XXXX'.XXX; my $from_nm = "送信者名"; my $from_adr = "XXXXX@XXX.XXX"; my $subject = "メール表題"; my $body = "本文"; # 送信者名を MIME エンコード encode_base64($from_nm,""); # subjectを MIME エンコード encode_base64($subject,""); $subject = "=?utf-8?B?" . $subject . "?="; # 本文を MIME エンコード encode_base64($body); my $MailPass = "XXXX/XXXX/XXX"; #SendMail Pass open(MAIL,"| $MailPass -t"); #======================================================== print MAIL <<"EOF_MAIL"; From: $from_nm<$from_adr> To: $to Subject: $subject Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 MIME-Version: 1.0 $body EOF_MAIL #======================================================== close MAIL; その他、色々ググっては見たのですが、自分ではみつけられず、 どうかアドバイスありましたらよろしくお願いいたします。
- 締切済み
- Perl
- メールフォームから送信すると文字化けします^^;
海外のHPのテンプレサイトにてダウンロードしたテンプレート内のメールフォームで送信すると文字化けしてしまいます^^; 下記がsendmail.php内の中身なのですが、何が足りないでしょうか?^^; ご教授よろしくお願いします。 http://www.premiumfreebies.eu/previews/ProFolio/ <? //This php file receives the post vars of the contact page and sends it to a email address //Settings $email = 'メールアドレス'; $subject = '[NAME] HP form mail '; $name = $_POST['name']; $from = $_POST['email']; $message = $_POST['message']; mb_language("ja"); mb_internal_encoding("UTF-8"); //Set the headers and send the mail $subject = str_replace('[NAME]', $name, $subject); $headers = 'From: '.$name.' <'.$from.'>'; mail($email, $subject, $message, $headers); ?>
- ベストアンサー
- PHP
- メールフォームCGIの文字化け。どなたか助けてください。
こんにちは。メールフォームを作ったのですが、 テスト送信すると文字化けになってしまいます。 それも、短い文章なら、日本語で表示されるのですが、文章がながくなると、一部分が文字化けしてしまいます。ヤフーの長い記事を貼り付けてみたのですが、やっぱり長いと変なところが文字化けしてしてしまいます。また、テストテストテストテスト・・・ とコピペすると、14行目あたりから急に テストテストテストテストテストテストテストテストテ! %9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%9%H%F%・・・・・・・ となってしまいます。いったいどのように書けば文字化けを起こさないで送信できるのでしょうか。。 以下はメールのサブルーチンです。どこがおかしいのでしょうか?ご指導お願いいたします。 sub mail{ $mail_body .= "$mes\n"; $mail_body .= "$mes2\n"; $mail_body .= "$mes3\n"; &jcode'convert(*mail_body,'jis'); $subject2 = &mimeencode($subject); open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!\n"; print MAIL "From: $from_mail\n"; print MAIL "To: $to_mail\n"; print MAIL "Subject: $subject2\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "$mail_body\n"; close (MAIL); }
- ベストアンサー
- Perl
お礼
早々のお答えありがとう御座います。 エンコードの部分が間違っているのですね。 また、UTF-8がサポートされていないことも大変参考になりました。 お蔭様でUTF-8で動くものを作り直す決心がつきました。 ボケ防止に頑張ってみますね。 貴重なお時間もありがとうごさいます。