CGIでメールを送信する際の件名や宛先の文字化け

CGIでメールを送信する際、件名や宛先の文字化けが文字化けすることがある。

その際は、生田 昇さんという方が公開されている mime_pls というライブラリを利用すると便利。

http://www.cc.rim.or.jp/~ikuta/mime_pls/index.html

上記から、 mimer.pl と mimew.pl という perl スクリプトを入手できます。

mimer.pl はデコード用、mimew.pl はエンコード用です。

エンコードする場合は、mimew.pl を使います。

使い方は簡単で、MIME エンコードしたい文字列を &mimeencode に 渡せば、エンコードした文字列を返してくれます。


#!/usr/local/bin/perl

require 'mimew.pl';

$sendmail = '/usr/sbin/sendmail';
$nkf   = '/usr/local/bin/nkf';

$from = '山田太郎 <taroh@foo.org>';     # 宛先の書き方1
$to = 'tanaka@tanaka.hoge.org (田中次郎)'; # 宛先の書き方2
$cc = '河田花子 <hanako@fuga.org>';

$subject = 'サブジェクト';

$body = <<END;
本文です。てすとてすと。
ほげほげ。ふがふが。むにゃむにゃ。
END

open(SENDMAIL,"| $nkf -j | $sendmail -t -i");

# &mimeencode で MIME エンコード
$encoded_from  = &mimeencode($from);
$encoded_to   = &mimeencode($to);
$encoded_cc   = &mimeencode($cc);
$encoded_subject = &mimeencode($subject);

print SENDMAIL "From: $encoded_from\n";
print SENDMAIL "To: $encoded_to\n";
print SENDMAIL "Cc: $encoded_cc\n";
print SENDMAIL "Subject: $encoded_subject\n";
print SENDMAIL "\n";
print SENDMAIL "$body";

close(SENDMAIL);

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress