電子書籍の厳選無料作品が豊富!

いま、市販の本についていた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);

A 回答 (3件)

ヘッダーと本文はエンコード形式が違います。


本文はjcodeでエンコードしているようですが
ToやらSubjectを正しくMIMEencodeしてますか?

ヘッダーはmime_encodeしてみてください。
    • good
    • 0

ぼけっとしてました、サンプルで使っているのは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
    • good
    • 0

エンベロープ(ヘッダ)の部分は


=?文字コードの宣言?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 …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!