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

締切り済みの質問

CGIフォームからのsendメールが文字化けしてしまいます

CGIフォームについて質問です。
フリーのCGIを使用してメールフォームを制作したのですが、sendメールが文字化けしてしまい、対処法がわからず行き詰まっています。

UFF-8対応のメールフォームCGIなのですが、送られてきたメールが下記のように全角のみ文字化けしてしまっています(メールアドレスの部分は文字化けしていません)。////////////////////////////////////////////////////////
お問い合わせいただきましてありがとうございます
--ご送信内容の確認------------------------
以下の内容が送信されました。

/*-email
****@*****.com

/*-????????????
????????????????????????

/*-?????????
?????????

/*-????????????????????????
??????????????????

------------------------------------------
お問い合わせに関しましては、営業日3日以内にご対応させていただきます。
いましばらくお待ち頂けますようお願いいたします。

/////////////////////////////////////////////////////////////


このCGIは今まで何度も使用してきた物なので、いつも通りsend.cgiの設定(FROMのメールアドレスや、メールのタイトルなど)を変更しました。
ただ会社のサーバに設置するので、CGIを置くフォルダが制限されていたため、指定通りのフォルダにsend.cgiを入れパーミッションの変更もhtml側のactionのパスも変更しました。
ちなみに会社のサーバのディレクトリは
+cgi---send.cgi
|
|
form.html
となっています。

このCGIを動かすには「Jcodモジュール」がインストールされていないといけないので、それがインストールされていないからかと思い、サーバ管理者に聞いてみたところ「Jcode.pm」はインストールされているとの事でした。
「Jcodモジュール」と「Jcode.pm」は違う物なのでしょうか?
いつも使用している物なので、おかしいなと思い、同じファイルをプライベートで使用しているサーバにアップした所、文字化け無しのメールがきちんと届きました。

send.cgiのソース(設定変更できる部分)は下記のように記述されています。

#!/usr/bin/perl
## 2007-04-08 Ver.5.2
#require 'jcode.pl';
use Jcode;
#server check (SPAM CHECK)
$this_server = $ENV{'SERVER_NAME'};
#CGIソース内で設定する場合は下記に書きます。
#※HTMLで設定している場合無視されます。
$sendmail = '/usr/sbin/sendmail';
@mailto = ('*****@****.co.jp');
$thanks_url = 'http://***.net/**/thanks_01.html';
$subject = 'お問い合わせ';
$return_subject = 'お問い合わせありがとうございます';
$return_body = <<"EOF";
この度はお問い合わせありがとうございます。
--ご送信内容の確認------------------------
以下の内容が送信されました。
[[resbody]]
------------------------------------------
お問い合わせに関しましては、営業日3日以内にご対応させていただきます。
いましばらくお待ち頂けますようお願いいたします。
EOF


この[[resbody]]の所が文字化けしている状態です。
上記の記述の後にもソースが書かれているのですが、ここはいつも一切いじりません。
form.htmlのエンコーディングも
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html ; charset=UTF-8" />
となっています。

ネットで色々検索してみたのですが、解決策に行き着く事が出来ずこちらに投稿させていただきました。

よろしくお願いいたします。

投稿日時 - 2008-08-09 03:39:08

QNo.4238394

すぐに回答ほしいです

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

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

回答(1)

ANo.1

フォーム入力データのデコードがうまくできてないのか、
メールデータのエンコードがうまくできてないのか、を確かめるのが先決ではありませんか。
入力データのデコード処理の前と後のデータを書き出してみたらどうでしょう。
それから、修正を考える方が良いと思います。

投稿日時 - 2008-08-18 20:33:02

あなたにオススメの質問