CGI-BBS > CGI > Perl > sendmailの文字化け


カレッヂ
カレッヂ


質問者 futa  投稿日 5/8(火) 04:09:58
sendmailを使って、web上からメール送信ができるようにしてみたのですが・・・
自分の携帯電話のアドレスに送る時だけ文字化けしてまいます。
アドレスが携帯用のアドレスでなければ文字化けしないのです。
ちなみに携帯はJ-PHONEでしか確認していません。

サーバーがUNIXなのでスクリプトはEUCで書いています。
デコードは行っています。
jcode.plは使わずにjperlを使用しました。

自分では原因が浮かびません。
どなたが原因がわかる方いらしゃいませんか?
回答者 しあわせのツボ  [削除]  投稿日 5/8(火) 10:47:28
まさかとは思いますが、送信時はJISに変換していますよね?
EUCのままメールを送るのは違反です。
パソコンのメーラは規格外メールにもある程度対応してくれますが、化けるのが普通だと思って下さい。
質問者 futa  [削除]  投稿日 5/8(火) 19:00:10
ありがとうございます。

JISにすることは知りませんでした。
UNIXで作業しやすいんのでEUCでスクリプトを書いていました。
だから送信時もEUCで送っていたことになります。
それでスクリプトをJISに変換したら問題は解決しました。
ありがとうございます。

しかし別の問題が発生しました。
フォームからデータを送信し後,
確認のために「以下のメールを送信しました」と表示させていたのですが
スクリプト内の文字列が文字化けしてしまうようになってしまいました。
メールの内容自体は文字化けしないのですが。
何が原因なのでしょうか?
Browserの文字コードを全て試してみたのですが
どれも文字化けしてしまいます。
おとなしくjcode.plを使ったほうがいいのでしょうか?
回答者 しあわせのツボ  [削除]  投稿日 5/8(火) 20:10:15
日本語をJISに変換すると、$だの%だののメタ文字がバシバシ入ります。
化ける部分をことごとく\でエスケープしてやるか、"ダブルクォート"でなく'シングルクォート'で囲んで記述すれば大丈夫です。

ついでなので付け加えておきますと、ヘッダに日本語を使いたい時は、JIS文字列を更にBase64エンコードしてやらないといけません。
Subjectもヘッダ内のデータですので、Subjectはきちんとエンコードするか、日本語を使わないようにして下さい。
# この処理はレスキューさんもサボっているので、時々「化ける」という相談があります。
質問者 futa  [削除]  投稿日 5/9(水) 23:54:33
>しあわせのツボさんへ
無事解決しました。
ありがとうございます。
フォームからの送信データはすべてエンコードしているので
Subjectも文字化けしていません。
助かりました。

このページは終了したので返信(回答)は書きこめません

Web裏技