自動送信メールの文字化けについて
相澤一郎さん (2018-03-05 17:15:47) www.chuohoka.com/cgi-bin/frm-qandaa/
初めまして。相澤と申します。
CGIについてはド素人ですので,質問して良いものか迷いましたが,ISPもホームページ制作会社も「わからない」「お手上げ」とのことでしたので,こちらへ質問させていただきます。
以前から長年Mailform 6.1を利用させていただいておりまして,特に問題なく動いておりましたが,当方がThunderbirdというメーラーを利用している関係で,メーラーのバージョンアップによりRFC準拠となり,フォームメールの件名が文字化けするようになりました。メーラーをダウングレードすれば問題ないのですが,サイトのメールフォームから当方への質問や資料請求等を受けており,自動返信メールが送信された際,クライアントサイドが最新のメーラー(Thunderbird ver38.1以上)だと件名が化けるようです。
そこでMailform 6.8(メールフォームCGI UTF-8対応版)へ切り替え設置しましたところ,タイトルの文字化けは見事に解消されました。
しかし,今度は自動送信されたメールの本文が以下のように化けてしまうようです。以前のMailform 6.8では,件名は文字化けしても,本文が文字化けすることはありませんでした。
ちなみに,当方の個人メールで実験,確認をしましたが,当方はBBIQ(九州電話)というサーバーになります。設置者に届くメール(シナプス鹿児島)は文字化けしておりません。
単純な設置ミスなのでしょうか。対処法をご教授願えればと思っております。
※文字化けを起こしているお問合せ者に自動送信されるメール
↓
─ご送信内容の確認─────────────────
2018-03-05 15:05:24
[ ?? ?? ?O ] ??
[ ??肪?? ]
[ ?X???? ] a
[ ?Z?@?@?? ] ??
[ ?d?b??? ]
[ email ] minitch@tsm.bbiq.jp
[ ???????????e ] ??????
──────────────────────────
※ 設置者用に届く文字化けしていないメール
↓
2018-03-05 15:05:24
[ お 名 前 ] あ
[ ふりがな ]
[ 郵便番号 ] a
[ 住 所 ] あ
[ 電話番号 ]
[ email ] minitch@tsm.bbiq.jp
[ お問い合わせ内容 ] あああ
大変長くなりまして申し訳ございません。宜しくお願い致します。
投稿した質問に記載ミスがありました
相澤一郎さん (2018-03-06 12:26:51) www.chuohoka.com/cgi-bin/frm-qandaa/
昨日投稿した質問に記載ミスがありました。
「以前のMailform6.8では件名は文字化けしますが本文が文字化けすることはありませんでした」と書いてしまいましたが,正しくはMailform6.1でした。申し訳ございません。
おそらくShift-jisとUTF-8の違いとか,そのあたりなのでしょうが,そのあたりがよくわかりません。すみません。
Re:自動送信メールの文字化けについて
和田 (2018-03-15 02:58:17) www.synck.com
HTMLはShift_jisのようなのでShift_JIS版のメールフォームをご利用いただくことで改善すると思います!
Re:自動送信メールの文字化けについて
相澤一郎さん (2018-03-15 12:26:06) www.chuohoka.com/cgi-bin/frm-qandaa/
ご回答ありがとうございます。
確かにMailform6.1はShift-Jis版で,古いバージョンのThunderbirdであれば件名の文字化けは発生しませんが,バージョンが新しいThunderbirdの場合,本文等は文字化けしないのですが,件名だけが文字化けします。Shif-jis版のCGIで,件名のmime処理部分だけ書き換えるなどは不可能でしょうか?
Mailform6.1は数年利用しており,とても信頼しています。その一部分(件名の変換部分)を書き換えることができれば,このままMailform6.1を使いたいと考えております。何度もすみません。
Re:自動送信メールの文字化けについて
和田 (2018-03-26 10:34:04) www.synck.com
MIME処理部分だけを書き換えることはできなくはないですが、結構ごそっと書き換える必要があるため、簡単にパッと対応するのは難しいと思います。Thunderbird側の問題であれば、
・お問い合わせフォームからのメールが入るフォルダをつくる
・フォルダを右クリックして文字コードを指定する
という手順で恐らく改善することはできると思います。
Re:自動送信メールの文字化けについて
相澤一郎さん (2018-09-21 09:56:59) www.chuohoka.com/cgi-bin/frm-qandaa/
本件につきまして勝手に質問だけして,その後自己解決し,お礼の返信もせず申し訳ございませんでした。
実はその後,Noboru Ikuta様のmimew.plというエンコーダをrequireで取り込み,いろいろいじっていましたら,メーラーやバージョンによる文字化けが解消しました。お手数をおかけしてすみませんでした。
しかし,今回は別件なのですが,送信者に届く自動返信メールの差出人をメールアドレスではなく社名に変更できないかと思い,誠に勝手ながら返信にて質問させていただきます。
現在は送信者に届く自動返信メールの差出人が,メールアドレスになっていますが,送信者側のメールクライアントに表示される自動返信メールの差出人を会社名に変更するにはどうすればよろしいでしょうか。
以上,よろしくお願いいたします。
Re:自動送信メールの文字化けについて
相澤一郎さん (2018-09-22 17:37:03) www.chuohoka.com/cgi-bin/frm-qanda/
何度もすみません。
昨日質問いたしました,「送信者に届く自動返信メールの差出人をメールアドレスから社名へ変更したい」という件についてですが,以下のように書き換えに挑戦してみましたところ,現在のところは希望通りの動きをしているようです。以下の変更履歴をチェックいただければ有り難いです。
まず,
#09.送信者に届くメールの件名
$conf{’res_subject’} = ’お問い合わせ受信のお知らせ|中央法科カレッジ’
の次に,
#09.送信者に届くメールの送信者名
として
$conf{’res_sender’} = ’中央法科カレッジ’;
を追加しました。
さらに,
sub send {
の中で,変数に値の代入が行われていそうな以下の部分
(body と res_body の違いから,res_で始まるものが送信者への返信用だと推測しました)
$subject = $conf{’res_subject’};
$body = $conf{’res_body’};
&jcode’convert(*subject,’jis’);
&jcode’convert(*body,’jis’);
に
$sender = $conf{’res_sender’};
&jcode’convert(*sender,’jis’);
を追加し,
さらに
sub sendmail {
open(MAIL,~~
内部に
$sender=&mimeencode($sender);
を追加,
print MAIL "From: $mailfrom¥n";
の部分を
print MAIL "From: $sender<$mailform>¥n";
と書き換えました。
とりあえず希望通りの挙動となってはいますが,cgiは素人が勝手にいじって間違えると,サーバーを暴走させたりすることがあり,多数のサーバー利用者に迷惑をかけることがあるとの記載があり,心配しております。危険な間違い等はありませんでしょうか。
ご指摘等いただければ有り難いです。よろしくお願いいたします。
Re:自動送信メールの文字化けについて
和田 (2018-09-27 20:34:12) www.synck.com
概ね内容は問題ないのですが件名にユーザが入力した任意の文字列を入れる場合、コマンドインジェクションの脆弱性になる場合があるため、あまり推奨はできません。ただ改修内容てきには問題ないと思います。
Re:自動送信メールの文字化けについて
相澤一郎さん (2018-09-28 09:14:34) www.chuohoka.com/cgi-bin/frm-qanda/
和田様
ご回答ありがとうございました。
コマンドインジェクションの脆弱性という言葉は恥ずかしながら全く知りませんでした。この脆弱性の問題を克服し,なおかつユーザー任意の文字列を件名に表示させるための改修は,私のような素人には困難でしょうか?
何度も質問してすみませんが,よろしくお願いいたします。
Re:自動送信メールの文字化けについて
和田 (2018-10-23 10:49:48) www.synck.com
回答がいつも遅くてほんとすいません。
サニタイジングという処理を施すことで多少安全になりますが、攻撃の手口も日進月歩なので、完全に安全にするのはちょっと難しいかもしれません。
Re:自動送信メールの文字化けについて
相澤一郎さん (2018-10-23 12:05:28) www.chuohoka.com/cgi-bin/frm-qanda/
和田様
お忙しい中ご回答いただき,ありがとうございました。
サニタイジング・・・勉強してみたいと思います。
htmlspecialchars($str, ENT_QUOTES, ‘UTF-8′);
というやつですね。検索すると「phpによる入力特殊文字の無害化」「入力フォーム設置なら必ず必要」のような情報がありました。HTML内のどこにどう埋め込めばよいのかがわかりません。なんとなくはわかりますが,現存のHTMLで書かれている入力フォームの中に上記のようなコマンドを書けばよいということでしょうか?
自分で勉強しろと言われれば返す言葉もございませんが,もしお時間がとれましたら少しご教授いただければ幸いです。
Re:自動送信メールの文字化けについて
和田 (2018-10-23 12:34:28) www.synck.com
PHPではなくCGIなので、send.cgi内でそのようなことをする必要があります。メールフォームプロであれば非推奨機能ではありますが、件名に入力された文字列を埋め込む機能がありますので、可能であればメールフォームプロもお試しいただければ幸いです。
Re:自動送信メールの文字化けについて
相澤一郎さん (2018-10-23 13:53:46) www.chuohoka.com/cgi-bin/frm-qanda/
早速のご回答ありがとうございます。
「件名に入力された文字列」とございますが,件名はクライアント側からフォームに入力されるものではなく,こちらでCGI内に直接書き込んでいるものだと思いますが,それでも対処の必要があるのでしょうか?
Re:自動送信メールの文字化けについて
和田 (2018-11-12 01:29:49) www.synck.com
すいません、こちらの解釈が誤っていたようです。
CGIにプリセットされた文字列を変化されるのみであれば大丈夫だと思います。そして回答がいつも遅くてすいません・・・。