Yahooアドレスに自動返信、タイトル文字化け

このQ&Aのポイント
  • 注文フォームがcgiとperlで作成されており、yahooアドレスに自動返信のメールを送ると件名が文字化けする問題について
  • 携帯アドレスに送ると件名が文字化けしないが、yahooアドレスに送ると文字化けする原因がわからず困っている
  • プログラムの詳細は理解していないため、どの部分を修正すればよいかがわからない
回答を見る
  • ベストアンサー

yahooアドレスに自動返信。タイトル文字化け

cgiとpealで作られている注文フォーム。 yahooアドレスに自動返信のメールを送ると件名の途中から文字化けします。 携帯アドレスにおくると化けません。 原因不明で困っています。 プログラムはまったくわからないのです。 件名 [自動送信]○○○○○○○、ご注文のご確認です。 となるべきところ、 [自動送信]○○○○○○○、ご注J 犬粒稜Д瓠璽襪任后# となってしまいます。 ↓こんなのはかいてありました。 &jcode::convert(\$subject,'jis'); &jcode::convert(\$message,'jis'); # # $subject = MIME::Base64::encode($subject); # chomp($subject); # $subject = "=?ISO-2022-JP?B?$subject?="; $subject = &add_encoded_word($subject, ""); #

  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.1

$subjectをMIMEエンコードするコードをコメントアウトしているのはなぜ? ここを戻せばOKかも。。。

yuko122783
質問者

お礼

ありがとうございました。

関連するQ&A

  • メールを文字化けしないようにしたい

    次のようにメールを送信しようとしています。 Fedora CoreはUTF-8なので、jcode.plでJISに変換しようとしています。 require "jcode.pl"; $subject = "テストメール"; $data = "これはテストメールです。"; &jcode::convert(\$subject,'jis'); &jcode::convert(\$data,'jis'); @str = "subject:$subject\n\n"); push (@str, "$data\n.\n"); これがなぜかうまくいきません。メーラーの文字コードをutf8にすると正常に表示されます。 使い方が違うのかと思ったので、次のように変えてみたところ、エラーになりました。 &jcode::convert(\$subject,'utf8','jis'); また、先頭にuse utf8;を付けてみたところ、送信できたものの文字化けが余計ひどくなりました。 インターネットで検索したり本を読んでみたりしても、よくわかりませんでした。 どうやったらJISに変換できるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • フォームで入力されたアドレスに内容のコピーを自動返信

    下記フォームのCGIに、フォームで入力したアドレスに内容のコピーを自動で返信したいと考えています。 htmlフォームのメールの項目は、name="mail"です。 $clength = $ENV{'CONTENT_LENGTH'}; if ($clength ne '') { read(STDIN, $query_string, $clength); @elements = split(/&/, $query_string); $i = 0; foreach $element (@elements) { ($key, $buf) = split(/=/, $element); $key =~ tr/+/ /; $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*key, 'jis'); @name[$i] = $key; $buf =~ tr/+/ /; $buf =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*buf, 'jis'); @value[$i] = $buf; $i++; } $mail = $FORM{'mail'}; &jcode'convert(*sname, 'jis'); &jcode'convert(*subject, 'jis'); &jcode'convert(*ftitle, 'jis'); open (MAIL, "| $sendmail -f $smail $trans"); if ($sname ne '') { print MAIL "From: \"$sname\" <$smail>\n"; } else { print MAIL "From: $smail\n"; } print MAIL "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; print MAIL "Subject: $subject\n"; print MAIL "\n"; print MAIL "$ftitle\n"; print MAIL "\n"; $tmp = '送信内容'; &jcode'convert(*tmp, 'jis'); print MAIL "$tmp\n"; print MAIL "----------------------------------\n"; for($j = 0; $j < $i; $j++) { print MAIL $j+1 . ": @name[$j] => @value[$j]\n"; } print MAIL "------------------------------------\n"; close(MAIL); print "Location: $query_file\n\n"; }

    • 締切済み
    • CGI
  • メールフォームで文字化けが出る

    http://okwave.jp/qa5038084.htmlの引き続きです。(メールフォーム) <meta http-equiv="Content-Type" content="text/html;charset=shift_jis"> &jcode'h2z_sjis(*contenido) &jcode'convert(*subject,'sjis'); &jcode'convert(*infor,'sjis'); &jcode'convert(*contenido,'jis'); &jcode'convert(*res_msg,'jis'); print "Content-type: text/html;charset=shift_jis\n\n"; ↓ sjis関連をutf8に書き換え、jcodeの頭文字をJに書き換え <meta http-equiv="Content-Type" content="text/html;charset=utf8"> &Jcode'h2z_utf8(*contenido) &Jcode'convert(*subject,'utf8'); &Jcode'convert(*infor,'utf8'); &Jcode'convert(*contenido,'utf8'); &Jcode'convert(*res_msg,'utf8'); print "Content-type: text/html;charset=shift_utf8\n\n"; require 'jcode.pl'をuse Jcode;に書き換え ※jcode::" となっている箇所はありません 結果 メールフォームはエラーや文字化けは出なくて成功しましたが、メール受信の際、ThunderbirdPortableメーラーでは全て文字化け(文字エンコーディングは「日本語ISO-2022jp」となっています)、ウェブメールのgmailでは内容は文字化けになっていませんが、タイトルが文字化けになっています。 どこが悪かったのでしょうか? 宜しくお願いします。

    • 締切済み
    • CGI
  • Sendmailの文字化けについて

    以前にも同じ質問をしたのですが、いまいち解決していないので、もう一度質問させて頂きます。 ホームページでsendmailをつかってフォームより記入してもらった内容を自分のところと確認メールとして記入した人のところに送るようにしていますが、確認メールが文字化けすることがあるようです。 しかし、全ての人に対して化けるというわけではなく、ほとんどの場合は大丈夫なようですが、一部の人に対してだけ化けるようです。 関係しそうな部分を大まかに書くと下記のようにしておりますが、間違っているでしょうか? if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach $pair (@pairs){ ($name, $value) = split(/=/, $pair); $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis'); &jcode'convert(*name,'sjis'); $xx =$value; &trans; $value = $xx; } sub trans{ $from='[@01-9A-Za-z._-]'; $to='[@01-9A-Za-z._-]'; &jcode'convert(*xx, 'euc'); &jcode'convert(*from, 'euc'); &jcode'convert(*to, 'euc'); &jcode'tr(*xx, $from, $to); &jcode'convert(*xx, 'sjis'); } &jcode'convert(*message,'jis'); if (!open(MAIL,"|$sendmail $mail_address")) {&error;} &jis("Subject: $mailname"); print MAIL "$msg\n"; print MAIL "To: $mail_address\n"; print MAIL "From: $mailfrom\n"; print MAIL "\n"; print MAIL "$message"; close(MAIL); sub jis { $msg = $_[0]; &jcode'convert(*msg, 'jis');}

    • ベストアンサー
    • Perl
  • jcode.pmでconvertできない

    UTF-8の文字をエンコードするため、jcode.plでエンコードしたのをjcode.pmに変更しました。 それで、 &Jcode'convert(*subject,'jis'); という記述を Jcode::convert(*subject,'jis','utf8'); にして、sendmailしましたが、文字化けします。 もし、良い対処方法をご存知でしたら、助けてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • CGIで自動返信メール

    CGIで自動返信メール サイトに問い合せフォームを作成し 自分宛メールと自動返信メールが送付されるようにしたいです。 CGIの中身を書き換えメールのヘッダに言葉を入れたいのですがうまくいきません。 検証(1)デフォルトの設定 【結果】「送信」ボタンクリック後に出てくる画面と 自分宛メールと 自動返信メールの内容は、回答内容の羅列のみ { &jcode'convert(*subject, "jis"); $mailhead = ""; $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } 検証(2)1行だけ追加 【結果】「送信」ボタンクリック後に出てくる画面の一番上の行に 「お問い合わせありがとうございます」と出て その下に回答内容が羅列されている。 自分宛メールも同様の症状。 自動返信メールは届かない。 { &jcode'convert(*subject, "jis"); $mailhead = "お問い合わせありがとうございます";★ここを変更してみました★ $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } 検証(3)2行追加 【結果】「送信」ボタンクリック後に出てくる画面の一番上の行に 「お問い合わせありがとうございます。 後日担当よりご連絡させていただきます。」と出るが 回答内容は文字化け。 自分宛メールも同様の症状。 自動返信メールは届かない。 (ちなみに検証(2)の「お問い合わせありがとうございます」の文末に 「ありがとうございます。」と「。」を追加しただけでも これと同じ結果になりました) { &jcode'convert(*subject, "jis"); $mailhead = "お問い合わせありがとうございます。 後日担当よりご連絡させていただきます。 ";★ここを変更してみました★ $mailhead .= "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; $mailhead .= "Content-Transfer-Encoding: 7bit\n"; $mailhead .= "MIME-Version: 1.0\n"; $mailhead .= "To: $mailto\n"; if ($mailfrom) { $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Cc: $FORM{'EMAIL'}\n"; } else { $mailhead .= "From: $mailto\n"; } $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } CGIの抜粋がこれだけでは足りないでしょうか? ちなみに自分宛メールはhotmailのアドレスを、 自動返信メールはgoomailを使用しています。

  • sendmailで本文が文字化けします

    sendmailを使ってメールを送信していますが、下記処理中で、charsetの指定を入れないと本文は文字化けしないのですが、指定を入れると文字化けしてしまいます。 ※ちなみに、OutlookExpressはどの場合でも文字化けしないで受信できました。 どなたかご存知のかた教えていただけないでしょうか。 ソースは以下のような感じです。 require "/XXX/jcode.pl";# 文字列変換 require "/XXX/mimew.pl";# MIME エンコード # メールHEADER作成 $head = "From: $FromUser\n"; $head .= "To: $ToUser\n"; $head .= "Subject: $Subject\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $head .= "Content-Transfer-Encoding: 7bit\n"; $head .= "\n"; # JISコード変換 $code = &jcode'convert(*head, 'jis'); # エンコード $header = &mimeencode($head); # メール本文作成 $body = "メール送信のテストです\n"; $code = &jcode'convert(*body, 'jis'); if (open(MAIL,"|/usr/lib/sendmail -f $FromUser $ToUser")){ print MAIL $header; print MAIL $body; print MAIL "\n\n"; close(MAIL); }

  • メール送信で文字化け

    メール送信で件名が文字化けしてしまいます。 カテゴリ内には同様の質問もあるようですが、 解決できないので、投稿しました。 以下のようなコードです。 $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
  • sendmailのFROMに日本語を使う

    CGIからsedmailを呼び出してメールを送信しています。 その時に差出人の部分の日本語が文字化けしてしまいます。 そこで&jcode'convertでjisに変えたのですが、今度は CGIがサーバーエラーになってしまいます。 どうすればよいでしょうか。 スクリプトはこんな感じです。 ----------------------------------------------- $from = '両国'; $subject = 'テスト'; &jcode'convert(*from, 'jis'); &jcode'convert(*subject, 'jis'); &jcode'convert(*msg, 'jis'); $errno = 1 unless open(MAIL, "| /usr/lib/sendmail -t"); return 0 if $errno; print MAIL "To: $MailTo\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "$msg\n"; $errno = 2 unless close(MAIL); return 0 if $errno;

    • ベストアンサー
    • Perl
  • sendmailの文字化け

    フリーのショッピングカートのCGIをダウンロードして使ってみたところ、カート自体は問題なく動きましたが、sendmailで送信した内容が文字化けしています。 件名は $subject = &mail64encode($subject);sub mail64encode { local($subject) = $_[0]; &jcode'convert(*subject, "jis"); …省略… の形でエンコードしているので日本語で表示されています。 本文は if( open(MAIL,"| /$mail_pass1/$mail_pass2/sendmail $email")) { &conv; print MAIL "From: $email\n"; print MAIL "To: $user\n"; print MAIL "Subject: $subject\n"; print MAIL "注文年月日\n"; print MAIL "$date\n"; print MAIL "お名前 $regname\n"; ・・・省略… print MAIL "---------------------------------------------------------------\n"; print MAIL "Remote addr: $ENV{'REMOTE_ADDR'}\n"; print MAIL "Remote host: $ENV{'REMOTE_HOST'}\n"; print MAIL "User Agent : $ENV{'HTTP_USER_AGENT'}\n"; close(MAIL); となっています。 print mail の中身はそのまま出力されるのではないのですか? 別にエンコードが必要ですか? 英数字は問題なく出力されるようですが、日本語は全滅です。 jocode.plを使用しています。 どなたかご教示下さい。

専門家に質問してみよう