
Perl5.8からsendmailを使ってメール送信しています。
髙や﨑が入ると文字化けします。文字化けしないようにする方法を教えてください。
#!/usr/bin/perl
require 'jcode.pl';
require 'mimew.pl';
$sendmail = '/usr/lib/sendmail';
print"Content-type: text/html\n\n test\n";
if (!(open(OUT,"| $sendmail -t -i -f xxxx\@hogehoge.co.jp"))) { ; }
print OUT "To: xxxx\@hogehoge.co.jp\n";
print OUT "From: xxxx\@hogehoge.co.jp\n";
print OUT "Reply-To: xxxx\@hogehoge.co.jp\n";
$subject = "サブジェクト 髙﨑";
$subject = &mimeencode($mail_subject);
print OUT "Subject: $mail_subject\n";
print OUT "Mime-version: 1.0\n";
print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n";
print OUT "Content-Transfer-Encoding: 7bit\n\n";
$honbun = "メール本文 髙﨑";
&jcode'convert(*honbun, 'jis');
print OUT "$honbun\n";
close(OUT);
No.1ベストアンサー
- 回答日時:
根本的には perl の問題ではありません。
「髙」や「﨑」といった文字は、JIS(ISO-2022-JP)では規定されていないため、
ISO-2022-JPのメールに入れることはできないのです。
文字コードがUnicodeであれば、「髙」や「﨑」を表現できますので、
・perlのスクリプトを、Unicode(UTF-8)で記述するようにする
・メールのcharset を UTF-8で送信するようにする
・文字コードの変換を、perl4時代の古いライブラリ(Unicode非対応)である「mimew.pl」や「jcode.pl」ではなく、perl5世代の「Encode.pm」を使う
という対応になるかと思います。
---ここから---
#!/usr/bin/perl
use strict;
use utf8;
use Encode;
my $sendmail = '/usr/lib/sendmail';
print "Content-type: text/html\n\n test\n";
my $out;
if (!(open($out,"| $sendmail -t -i -f xxxx\@hogehoge.co.jp"))) { ; }
print $out "To: xxxx\@hogehoge.co.jp\n";
print $out "From: xxxx\@hogehoge.co.jp\n";
print $out "Reply-To: xxxx\@hogehoge.co.jp\n";
my $mail_subject = "サブジェクト 髙﨑";
$mail_subject = encode('MIME-Header', $mail_subject);
print $out "Subject: $mail_subject\n";
print $out "Mime-version: 1.0\n";
print $out "Content-Type: text/plain\; charset=\"UTF-8\"\n";
print $out "Content-Transfer-Encoding: 8bit\n\n";
my $honbun = "メール本文 髙﨑";
$honbun = encode("UTF-8", $honbun);
print $out "$honbun\n";
close($out);
---ここまで---
といった形でしょうか。
ただし、最近はまず大丈夫だと思いますが、
「日本語のメール」としては、ISO-2022-JPで送るのが主流であり、UTF-8で送った場合にはメールソフトによっては問題が出るかもしれないことは覚悟する必要があるかと思います。
ありがとうございます。
文字化けすることなく送信できるようになりました。
Unidoceでなくとも表示できると思いこんでいたのですが、だめだったのですね。
助かりました。勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Perl perlについての質問 2 2022/10/17 15:25
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Sendmailで送信。メアドが違う...
-
sendmailができない
-
Perl からbashを呼び出したい
-
sendmailで複数の宛先にメール...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
Did you name your dog Koro? ...
-
formで特定のinputを送信しない...
-
<SELECT>タグの折り返し
-
VBAでPDFのコピーとリネームを...
-
Fire fox の 文字化けを解消...
-
セレクトメニューについて
-
複数列を持ったリストボックス...
-
既存のデーターを開く方法
-
Linux(Ubuntu)における、ワンラ...
-
デ-タテ-ブルの内容での更新...
-
Telnetモジュールで繋がりません。
-
プルダウンで別項目に値を代入...
-
10進数→2進数の出力について
-
pythonで演算子を変数に代入す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sendmailのFROMに日本語を使う
-
Perlからメール送信で文字化け
-
sendmailで複数の宛先にメール...
-
perl フォームメール送信の...
-
CGI メールフォームからBCCのア...
-
フォームメールの自動返信について
-
メールフォームを作成したいの...
-
サーバー内のテキストデータを...
-
フォームの日本語が文字化け
-
sendmailで送信したメールが届...
-
sendmailについて
-
Sendmailで送信。メアドが違う...
-
sendmailで本文が文字化けします
-
メーラーに自動的にメッセージ...
-
Perlにて、sendmailを使用する...
-
Perl メール 初心者
-
sendmailが上手く動かないのか...
-
Perl からbashを呼び出したい
-
自動返信について
-
Perl SendMail Bcc メルマガ
おすすめ情報