PerlでMailを送信プログラムを作ってみようと考えています。
本文は
HTML→Perl(cp932→UTF-8)→Mail送信
という形にしました。
下記コード(一部抜粋してます)
my $subject = 'Mail受付';
my $header = <<"end";
From: $from
To: $mailto
Subject: $subject
Mime-Version: 1.0
Content-type: text/plain;charset="UTF-8"
Content-Transfer-Encoding: 8bit
end
my $name =$q->param('name');
Encode::from_to($name, 'cp932', 'UTF-8');
$smtp->mail($from);
$smtp->to($mailto);
$smtp->to($subject);
$smtp->data();
$smtp->datasend("$name\n\n");
$smtp->dataend();
$smtp->quit;
そして、件名が文字化けしてしまうのですが、
MIME::Base64
MIMEエンコードを使いたいのですが、どのようにかけばいいのでしょうか???
my $subject = 'Mail受付';
↑ここに記述するとは思うのですが・・・
また、間違ったコードの使い方をしていればご指摘ください・・・
No.2ベストアンサー
- 回答日時:
No.1です。
> ’ISO-2022-JP'←これは異字体が対応していないとネットで記載されていて
> 異字体を表示するならUTF-8ということだったのですが、
はい。そういった場合はUnicode(UTF-8)かShift_JISを使用することに成ります。
メールヘッダの日本語が入る可能性のある全ての行と本文をcharset属性で指定する文字コードに変換すればOKです。
なお、JISの場合(ISO-2022-JPの場合)Content-Transfer-Encoding:行には 7bit と指定しますが、UnicodeやShift_JISの場合は 8bit と指定します。
なぜ、JISは7bitでUnicode、Shift_JISは8bitなのかはそれぞれの文字コードのコード表を参照し、コードの値を2進数にしてみるとわかります。
JISだと異字体が化ける理由も文字コードを眺めると分かります。
p.s.
異字体がなぜこんな面倒な取り扱いになっているのかや日本語の文字コードに興味をお持ちの場合は、大変古い連載コラムですが以下のようなものが参考になるでしょう。
http://internet.watch.impress.co.jp/www/column/o …
ありがとうございました。
おかげ様で、解決に至ることができました!
p.s.での参考サイトまで・・・;;
ありがとうございます!
No.1
- 回答日時:
Base64はバイナリーコードをテキスト変換するためのものです。
メールの場合は添付ファイル部分をテキスト化するために使用します。
メールのFrom:、To:、Subject:などヘッダ行と本文はヘッダ行のContent-Type:行のcharset属性には何を指定されていますか?
受信側でSubject行の内容が文字化けするのは送信側がSubjectにセットした文字列の文字コードがcharset属性のそれと異なるからでしょう。
なお、使用する文字コードの標準はJISです。その場合、charset属性にはISO-2022-JPを指定します。
参考まで。
コメントありがとうございます!
そういうことなのですね!
charset属性にISO-2022-JPを指定すれば文字化けはしなくなりました。
しかしISO-2022-JPに変更すると
Encode::from_to($name, 'cp932', 'UTF-8');
↓
Encode::from_to($name, 'cp932', ’ISO-2022-JP');
このようにする必要がありますよね・・?(自信がありませんが;;)
仮にこうすると件名、本文とも文字化けしないのですが、
’ISO-2022-JP'←これは異字体が対応していないとネットで記載されていて
異字体を表示するならUTF-8ということだったのですが、
例えば
my $name =$q->param('name');
このparamで受け取った(シフトJIS{cp932})
は最終的にUTF-8で送るようにすれば異字体も表示されるという認識で合ってますか??
でもそれだとEncode::from_to($name, 'cp932', 'UTF-8');
こういうこと以外に別の処理が必要になるということですよね・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP Content-Typeが機能していない? 2 2022/07/17 11:10
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl メール件名について
-
cgi 実行時のエラー
-
ビジネスメールの敬称
-
テキストボックスの番号を使っ...
-
エクセルVBA テキストボックス...
-
DATE型変数を初期化する方法
-
初歩的な事だと思います。 Sub...
-
htmlからbatファイルを起動する
-
Excel-VBAでInputBox+Pulldown...
-
数字以外の入力をエラーにする...
-
フォームを再送信しますか?
-
アクセスのマクロ
-
アルファベットGの小文字の入力
-
アイフォン使ってたらちょくち...
-
エディットボックスの入力制限...
-
教えて!全角文字「μ」の半角
-
TextBoxから数字が文字...
-
EXCEL VBA で指定した範囲に入...
-
ホームページビルダーのメール...
-
FIREFOXでWebページを表示でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DelegateでPOP3、SMTPのリバー...
-
Perlでのメール添付送信のエラー
-
Net::SMTPでメール配信できる限...
-
cgi 実行時のエラー
-
GmailのSMTPを用いたメールフォ...
-
Thunderbirdのアップデートをし...
-
添付ファイルはファイルでなけ...
-
Perlでのメール送信
-
Net::SMTPでのメール送信について
-
telnet gmail
-
perlでSMPT認証してメールを送...
-
PerlでSMTP-AUTH認証をする
-
ビジネスメールの敬称
-
エクセルVBA テキストボックス...
-
数字以外の入力をエラーにする...
-
テキストボックスの番号を使っ...
-
DATE型変数を初期化する方法
-
初歩的な事だと思います。 Sub...
-
なんで
-
Excel-VBAでInputBox+Pulldown...
おすすめ情報