こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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;

部分的で分かりにくいかもしれませんが

どなたか どうぞよろしくお願いいたします。

投稿日時 - 2014-06-06 15:05:44

QNo.8626121

すぐに回答ほしいです

質問者が選んだベストアンサー

> # 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 はサポート外だと思います。

投稿日時 - 2014-06-06 17:34:05

お礼

早々のお答えありがとう御座います。

エンコードの部分が間違っているのですね。
また、UTF-8がサポートされていないことも大変参考になりました。
お蔭様でUTF-8で動くものを作り直す決心がつきました。
ボケ防止に頑張ってみますね。

貴重なお時間もありがとうごさいます。

投稿日時 - 2014-06-07 01:07:28

ANo.2

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

メールは必ずiso-2022jpで送らなければならないこと
メールヘッダは、ASCII文字イガイはBACE64エンコードしなければならない
本文も含め一行64文字以下でないとならない
 ( http://www.akanko.net/marimo/data/rfc/rfc2045-jp.txt )

ここは理解されていますか??

投稿日時 - 2014-06-06 16:42:53

お礼

お答えありがとう御座います。

何年も前に作ったもので忘れておりました。

プログラムができるまでメールフォームは止めます。

昔のようにまた本を開いて楽しみに作ります。


ありがとう御座いました。

投稿日時 - 2014-06-07 01:14:57

あなたにオススメの質問