• 締切済み

postmail ver4.3でメールを送ると文字化けしていまいます

web作成、cgiの初心者です。 現在postmailを利用してメールフォームを作成しました。エンコーディングはutf-8です。作成したメールを送ると、受け取ったらタイトル以外全て文字化けしています。 ググってみるといろんな方の方法があり、かなり改造をしないといけないようでいくつか試してみましたが、どうもうまくいきません。 出尽くしているのかも知れませんが、私の理解では解決することができません。よろしければ解決方法、もしくはベストなサイトを教えてくださいませ。 お手数おかけしますが、よろしくお願い致します。

  • CGI
  • 回答数3
  • ありがとう数9

みんなの回答

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.3

おそらく、Shift-JISの文字であっても強引にUTF-8と解釈して変換したのが文字化けの原因ではと思います。 文字コードを推測して変換するようにしました。 これでも文字化けは起こりますでしょうか? 642、643行目の以下を &jcode::convert(\$key, 'sjis'); &jcode::convert(\$val, 'sjis');    ↓   ↓ use Encode qw(from_to); use Encode::Guess qw(cp932); for my $data ( $key, $val ) { my $enc = guess_encoding($data); my $char_code = ref $enc ? $enc->name : $enc =~ /utf8/ ? 'utf8' : 'cp932'; from_to($data, $char_code => 'cp932'); } に変更。 >No.2さん useを使うとモジュールをロードをして必ず実行されるので、必要なときにロードされるrequireにしてみました。 ただコードをよく見ると、この部分は必ず実行されるようなので、requireにしてもパフォーマンスの改善にはならないかもしれません。

回答No.2

> require Encode; これじゃ駄目だと思います・・・ use Encode; Encode::from_to($key, 'utf8' => 'cp932'); Encode::from_to($val, 'utf8' => 'cp932'); こうでは?

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.1

ダウンロードして中身を見てましたが、以下の修正でうまくいきますでしょうか? 642、643行目の以下を &jcode::convert(\$key, 'sjis'); &jcode::convert(\$val, 'sjis');    ↓   ↓ require Encode; Encode::from_to($key, 'utf8' => 'cp932'); Encode::from_to($val, 'utf8' => 'cp932'); に変更。

hotrod7020
質問者

お礼

早速のアドバイス有難うございます。 やってみたのですが、全体としては文字化けの量は減ったのですが、違う個所が文字化けになりました。 以下のような感じです。以前は送信日時以下も文字化けしていました。 アドバイスありましたら、よろしくお願い致します。 以下フォームより送信したメール内容です *********************************************************** このメールは自動送信でお送りしています。 以下のとおりフォームメールより送信がありました。 ──────────────────────────── ▼送信内容 ──────────────────────────── ?????O = ?????? aaa ?????? aaa ???N?? = aa ?A????\??d?b??? = aaa ???[???A?h???X = aaa ?????O = ?????? aaa ?????? aaa ???]?c??? = ?????c??? ???????z = ?O?`?P?O?O???~ ??????????? = ?P?? ??????N?? = ?P?`?R?N ???X??????? = ??? ??ω?\?z(????) = ?P???~ ???p??(?K?{) = aaa ──────────────────────────── 送信日時 : 2009/12/16(Wed) 22:41 ブラウザ : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6.3; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729) ホスト名 : 222.226.122.247 ────────────────────────────

関連するQ&A

  • postmail(UTF-8)でメールが文字化け

    POST-MAIL (UTF-8)を使用しているのですが、フォームの送信完了まで問題無く完了するのですが、メールが文字化けするのです。 tmpl内のhtml(HTML5)、は保存もcharsetもUTF-8Nになっています。 同じくtmpl内のmail.txt、reply.txtも保存はUTF-8Nになっています。 postmail.cgi、はUTF-8Nで保存されています。 宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • メールフォームから届くメールが文字化けしてしまいます・・・

    私の通ってる学際で利用するホームページを作ってます。アンケートフォームに無料cgiのpostmailというものをつかわさせてもらっています。 KentWeb http://www.kent-web.com/data/postmail.html ですが、設置したメールフォームから届くメールの一部が文字化けしてしまいます。 調べたら半角カタカナを入力すると文字化けするみたいです。 半角カタカナを入力しても文字化けしない方法を教えて下さい。又、これの他にいいメールフォームcgi(無料)があれば一緒に教えて欲しいです。 学際がもうすぐなのでできれば早く教えて欲しいです。 舞

  • postmailを使ったメールフォームについて

    お世話になります。 CGIを使ったメールフォームを利用したくて、KENT-WEBさんのpostmailをダウンロードして解凍、それをホームページビルダーで添付のメールフォームを自作で好みのメールフォームに書き換えました。postmail.cgiの内容もperlパスとかメールアドレスとか必要箇所も設置方法を参考に書き換えました。 メールフォームのHTMLの中には、<form action="postmail.cgi"method="post">も入れてあります。 そして、作ったhtml.indexのサイト全体に上記で作ったメールフォームをリンクさせました。 この状態で、レンタルホームページスペースにアップロードすると言う流れであっていますでしょうか。 postmailディリクトリを作ってそこにサイト全部をアップロードするのか、CGIのみをアップロードするのか、またpublic_htmlというディリクトリにはサイト全体をアップロードしなければいけないと言う事であっていますか? その他アクセス制限を支持通りかどうか確認すれば良かったでしょうか。 お借りするサイトさんは、CGI利用可能、sendmailにも対応しています。 ビルダーで転送する前に、画像gifは全てimageと言うフォルダを作って全てそこへ移動しましたので、アップロードする時にはimageと言うディリクトリが自動で作成されます。 postmailのフォルダもあるので、その中のメールフォームをhtml.imdexにリンクさせた時点でpostmail.cgiと言うディリクトリが出来ると思うのですが、サイトさんのディリクトリをいじり過ぎてわからなくなってしまうと元に戻せないので、長文になってしまい申し訳ありませんが、 初心者で、勉強不足もありご面倒かと思いますが、ご意見をどうぞ宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • フォームメールが文字化け

    アングラーズネット社の「インターネットショップCGI&受注管理」という書籍に付属されている「fmail」というCGIファイルを使ってメールフォーム作成してサイトにアップロードしたのですが、メール送信確認画面で文字化けします。そのメールフォームで受信したメールも文字化けしています。AdobeGoLiveCS2でホームページを作成しています。最初GoLiveでCGIファイルを読み込むとファイル内容が文字化けになっていたので、エンコーディングを日本語シフトjisに設定すると文字化けが解消されました。しかし、相変わらずメールフォーム及び受信メールは文字化けしたままです。 OSはWindowsXPです。 アドバイスよろしくお願い致します。

  • 突然文字化けしました(泣)

    ホームページを初めて作成している初心者です。 一通り作業を終え、アップできました。 が、その後修正作業や更新を続けていく中で、突然文字化けしました。 解決の糸口をご教授いただけると助かります。 ...途方に暮れています。 考えられる原因として... ◆POST MAIL使用にあたり、途中からUTF_8からShift_JISに書き換えした ことが考えられますが、書き換え後に何度か確認したり更新したりしていく中で文字化けの発生はありませんでした。 が、なぜか突然文字化けしました。 文字化けしたページを、ブラウザのテキストエンコーディング表示をUTF_8で見ると、表示されます。 ただ、HTMLをUTF_8に変えてもDreamweaver上ではエラーとなり保存ができないですし、 コードビュー画面は文字化けしています。 希望としてはPOSTMAILを使用したいので、Shift_JISにまとめたいです。 なぜ始めにUTF_8で作ったかというと、参考にしたCSSのテンプレートがそうだったからです... 宜しくお願いします。

    • ベストアンサー
    • HTML
  • AppleMail 文字化けについて

    MacOSX 10.4.11を使っています。 AppleMailで送信していて、文字化けをするという事をよく言われたので文字化けをしない様にエンコーディングをISO-2022-jpに変更しました。 変更は様々なサイトで提供されているやり方 1.デフォルトのエンコーディングを“UTF-8”エンコーディングから“ISO-2022-JP”エンコーディングに設定   方法:      1.「ターミナル」(/アプリケーション/ユーティリティ/)を開きます。      2. プロンプトの後に次のコマンドを入力します。       defaults write com.apple.mail NSPreferredMailCharset "ISO-2022-JP"      3. コマンドの入力後、「Return」キーを押します。      4.「ターミナル」を終了します。 を参考にしました。 ですが、どうしてか文字化けが治りません。 Thunderbird3で確認してみたところ、タイトルは普通に見えるのですが、本文が文字化けをしています。 エンコーディングはSHIFT-JISになっているのですが、再度Shift-JISを選択すると、今度は本文が見える様になってタイトルが文字化けをします。 思うにタイトルと本文のエンコーディングが違うのかと思いいろいろエンコーディングを変えたら、タイトルはISO-2022-jpで本文がShiftJISで送られている様に思います。 何か解決方法があれば教えて頂きたいと思います。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • postmailを使って日本語と英語のメールフォームをそれぞれ作りたい

    CGI初心者です。 現在、Kent Webさんのpostmailを使って、メールフォームを作っています。 日英中の3ヶ国語のフォームを各ページに設置したいと考えています。 日本語のフォームは問題なく作成でき、英語版に取り掛かっています。 やり方はとしましては、 ・日本語フォームに使用したpostmail.cgiとpostmail_html、tmplフォルダをコピーし、ファイル名を変えた ・それらファイルのソースを英語表記に修正 これでいざテストしてみると「 Forbidden 閲覧できません。このページはホームページ開設者が閲覧することを許可していないため、ご覧になることができません。」のエラーが出てしまいます。 こちらでお伺いしたいのは、二ヶ国語で問合せフォームを設置する場合のpostmailまたはCGIファイルの使い方です。 手探りでやっていますので初歩的なミスをしているかもしれません。 どなたかご教授頂ければ幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • Postmailの使用でメール受信がされません

    素人ですがどうぞよろしくお願いいたします。 KENTwebさん提供のフォームメールCGI(Postmail)を利用して、アンケートページを作成したいと考え、CGIの設置を行ったのですが指定したメールアドレスへの返信ができず困っています。 *KENTwebさん→http://www.kent-web.com/data/postmail.html 私が実行した手順の概要を示させていただきますと、 (1)CGI、sendmail可のレンタルサーバにKENTwebさんのページに記載してある要領に沿ってPostmailを設置しました。KENTwebさんのページのにあるように、postmail.cgi?mode=checkを末尾につけたチェックモードにて、全ての項目でOKが表示されましたので、CGIの設置は成功したのではと考えています。 *具体的に行った事としては、Perlのパス、sendmailのパスをサーバー指定にし、$mailto = "xxx@xxx.xxx"の部分を自分のメールアドレスに置き換えただけの措置です。 (2)次に、試しにサンプル(?)として同梱されているpostmail.htmlにて、 入力結果が指定のメールアドレスに送信されるかを試してみました。 postmail.htmlはこのようなページです→ http://www.kent-web.com/data/postmail/index.html 実際にレンタルサーバに自分でアップロードしたページにて、「送信する」をクリックしますと、「以下の内容でよろしければ送信ボタンを押して下さい。上記内容で送信」⇒「ありがとうございます。送信は正常に完了しました。」と表示されるにもかかわらず、結果が届きません。 (postmail.cgiの107行目の$mailto = "xxx@xxx.xxx";にてメール宛先を指定しているのですが受信ができません。) このような場合、どのような原因が考えられますでしょうか? FAQ等を見てみましたが該当が無いようでしたので、ご存知の方、どうぞよろしくお願いいたします。

    • ベストアンサー
    • CGI
  • postmail フォーム複数設置に関して。

    初心者です。。 HPを作成し、postmailのフォームを設置 しました。レンタルサーバーはロリポップです。 なんとか『会員登録フォーム』と言う自分でpostmailを編集した フォームは無事設置出来て、フォームを送信すると自分の アドレスに戻って来るようになったのですが・・ 同じサイト内にもう一つ『参加申込みフォーム』と言うのを 設置したくて同じようにフォーム自体は作成出来たのですが、 サーバーのアップするとアクセス出来ません・・ もとからあるDLした『postmail』中の postmail.html とpostmail.cgi wをコピーして、 postmail2.html と postmail2.cgi を作り、 編集後、ロリポップFTPにアップロードしたのですが、このやり方では 駄目ですか・・?? postmail のファイル自体をもう一つ postmaii2としてDLしないといけないのでしょうか?? ご回答よろしくお願いいたします。

  • postmailの収集データをtsvファイルなどで保存できないでしょうか?

    はじめまして。 現在、postmailというフリーCGIを使用して、アンケートフォームを作成しているのですが、当たり前というば当たり前なのですが、メールによるデータの収集しかできません・・・。 アンケートの件数やアンケート数が多い場合に1つ1つメールを確認してデータを収集しなくてはいけないことに今になって気づきました。 GCIに対して全くの素人でやっとここまでできたのでpostmailを改造したいと思っています。 エクセル等を使用してデータを楽に収集できる方法を知ってらっしゃる方、力を貸していただけないでしょうか。 かなり分かりにくい文章かもしれませんが宜しくお願いいたします。

    • 締切済み
    • CGI

専門家に質問してみよう