いま、市販の本についていたDM用のCGIをカスタマイズしているのですが、文字化けと改行コードがうまくいきません。ちゃんと送れるメールアドレスもあるのですが、文字化けしてしまう人もいます。
ちなみにサーバーはLINUXです。なんとか本文の文字化けと改行は直りましたが、宛先と件名がどうしても化けてしまいます。お分りになる方がいましたら、ぜひお教え下さい。ちなみに、文字コードはeuc-jpで統一し、改行はLFでやっています。
sendmailに埋め込む部分をどう修正すべきかが分かりません。
参考までにスクリプトの一部を書きます。
# sendMail利用部 埋め込みコマンドの置き換え
sub broadCaster
{
my $i = 0;
my $temp = '';
my $letter = '';
for ($i = 0; $i <= $#lists; $i++){
$temp = "$subject###$body";
$temp =~ s/<CGI:mail>/$listDX[$i][0]/g;
$temp =~ s/<CGI:name1>/$listDX[$i][1]/g;
$temp =~ s/<CGI:name2>/$listDX[$i][2]/g;
$temp =~ s/<CGI:admin name>/$adminName/g;
$temp =~ s/<CGI:admin mail>/$adminMail/g;
$temp =~ s/<CGI:time>/$now/g;
($tempSubject, $tempBody) = split(/###/, $temp);
$tempBody =~ s/\r\n/\n/g;
$letter = "X-Mailer: U got Mail\n";
$letter .= "To: \"$listDX[$i][1] $listDX[$i][2] 様\" <$listDX[$i][0]>\n";
$letter .= "From: \"$adminName\" <$adminMail>\n";
$letter .= "Subject: $tempSubject\n\n";
$letter .= "$tempBody\n\n";
$letter = jcode::jis($letter);
No.1ベストアンサー
- 回答日時:
ヘッダーと本文はエンコード形式が違います。
本文はjcodeでエンコードしているようですが
ToやらSubjectを正しくMIMEencodeしてますか?
ヘッダーはmime_encodeしてみてください。
No.3
- 回答日時:
ぼけっとしてました、サンプルで使っているのはjcode.plですね多分。
Jcode.pmとは別物です。コマンドが入力できる環境(telnetやssh)があるなら$ perl -MJcode
してみてください。Can't locate Jcode.pmと出なければ利用できます。(Ctrl+Cでperlの実行を中止してください)
use Jcode;
をプログラムの先頭の方に書き加えてください。
入っていなければインストールするか(root権限やtelnetまたはsshのコマンド入力環境が必要です)、mimew.plを使うという方法もあります。
mimew.plを利用するにはプログラムと同じディレクトリに配置して
require 'mimew.pl';
$tempSubject = mimeencode($tempSubject);
のように書けばよいと思います。
Jcode.pm
http://search.cpan.org/~dankogai/Jcode-2.00/
mimew.pl
http://itbtech.itboost.co.jp/perl/mimew.pl
No.2
- 回答日時:
エンベロープ(ヘッダ)の部分は
=?文字コードの宣言?B?宣言された文字列をBase64にエンコードしたもの?
で、全体で75文字以上になる場合は改行を入れる。という形式の取り決めがあります。(参照URLのRFC2047を見てください)
例.)
=?ISO-2022-JP?B?GyRCRnxLXDhsGyhC?=
ということをふまえてなければいけませんが、Jcode.pmにはそのための関数が用意されています。jcode::jisを使っているのですでにuse Jcode;は宣言されていると思いますが一応確認してください。
$tempSubject = jcode->($tempSubject)->mime_encode;
を$letterより前に入れてください。
あて先の名前はおそらくは$listDX[$i][1..2]あたりに入っているかと思いますが、そこも必要に応じてmime_encodeしてあげてください。
ただし、mail@exsample.comのようなメールアドレスの部分はmime_encode*しないで*ください。
参考URL:http://www.asahi-net.or.jp/~bd9y-ktu/dtd_f/rfc_f …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
- C言語・C++・C# int temp = 0; if(isdigit(arr[i])){//文字が数字であれば(0~9) 1 2022/03/27 01:37
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- 英語 教えて下さい これらの英文の解説をお願い致します。 a. My friend wrote to me 3 2023/05/05 23:04
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- C言語・C++・C# C言語 leetcode21 Merge Two Sorted Lists 2 2022/04/24 19:35
- その他(プログラミング・Web制作) Sikulix2.0.5(Jython2.7.3)でcsvを読込WEB検索条件にpasteで文字化け 1 2023/03/31 11:02
- Ruby 1、Rstudioで回帰直線を求めるために必要な関数はなにか?アルファベット2文字で答えよ。 2、r 1 2022/08/03 11:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BASP21によるbase64のデコード...
-
テキストファイルから日本語部...
-
文字コードの変換
-
pythonエラー
-
検索キーワードのデコードについて
-
jcode.pmでconvertできない
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
CString から LPCTSTRの型に変換
-
マクロを使ってフォルダー内に...
-
「何とかで始まり、何とかで終...
-
EXCELからCSVにすると余計なカ...
-
Excel VBAでPDFファイルをMicro...
-
住宅にカナを入力する際に丁目...
-
VBA 置換文字がみつからない時
-
VBA 文字に半角が含まれて...
-
各項目がダブルクォーテーショ...
-
VBA EXCEL あるセルの中の一...
-
LINUX上でシリアル通信(C++)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IMAP4でsubjectが検索ヒットしない
-
CASLIIの数値データ入出力
-
pythonエラー
-
BASP21によるbase64のデコード...
-
jisコードで16進数の『3c』か...
-
「繝・せ繝・」となる文字化け
-
URLエンコードされたデータを戻...
-
perlの日本語文字コードはどう...
-
1つのサイトで文字コードが混在...
-
Encodeモジュールで日本語化したい
-
Perlでのメール本文の解析について
-
Cookie変数の命名について
-
Lite.pmを使ったメールで文字化け
-
Perl:ファイル名だけ文字化けする
-
Perl 文字化け
-
javaでエンコードがうまくいかない
-
MIMEでエンコードされたMailのS...
-
メール(iso-2022-jp-2)のデコ...
-
index関数で日本語を使用する場...
-
エンコードとデコードの違い?
おすすめ情報