PostNukeでは、変換は使用者任せのようです。エンコード変換が見当たりませんでした。
xoopsでは、phpmailerをオブジェクト変数として内部に持つラッパークラスが定義されていて、言語ごとにさらにそのクラスを拡張定義しています。
class XoopsMultiMailer extends PHPMailer {
:
}
class XoopsMailer
{
var $multimailer;
function XoopsMailer()
{
$this->multimailer = new XoopsMultiMailer();
$this->reset();
}
function sendMail($email, $subject, $body, $headers)
{
$subject = $this->encodeSubject($subject);
$this->encodeBody($body);
$this->multimailer->ClearAllRecipients();
$this->multimailer->AddAddress($email);
$this->multimailer->Subject = $subject;
$this->multimailer->Body = $body;
$this->multimailer->CharSet = $this->charSet;
$this->multimailer->Encoding = $this->encoding;
if (!empty($this->fromName)) {
$this->multimailer->FromName = $this->encodeFromName($this->fromName);
}
if (!empty($this->fromEmail)) {
$this->multimailer->From = $this->fromEmail;
}
$this->multimailer->ClearCustomHeaders();
foreach ($this->headers as $header) {
$this->multimailer->AddCustomHeader($header);
}
if (!$this->multimailer->Send()) {
$this->errors[] = $this->multimailer->ErrorInfo;
return FALSE;
}
return TRUE;
}
}
ここまでが共通定義です。言語別にさらに拡張していて、日本語の場合、
class XoopsMailerLocal extends XoopsMailer {
function encodeBody(&$text){
if ($this->multimailer->needs_encode) {
$text = $this->STRtoJIS($text,_CHARSET);
}
}
}
としています。iso-2022-jp決めうちでした。FromやSubjectも同様の感じです。
さすが練り上げられてますが、なんかここまでしなくても、とも思います。
ちなみにdrupalでは、もっと簡単に言語ごとにmail()のラッパー関数を上書きできるようになっていて、日本語のはその関数の中でmb_send_mailするてな感じでした。