結構はまりそうな感じなのでメモ。
<?php
require_once('Mail/Queue.php');
$con = mysql_connect('localhost','user','pass');
$db = mysql_select_db('db',$con);
mysql_query('set charset set utf8');
$subject = mb_convert_encoding('サブジェクト','ISO-2022-JP','UTF-8');
$message = mb_convert_encoding('本文','ISO-2022-JP','UTF-8');
$from = 'a@b';
$to = 'b@c';
$headers = array(
'From'=>$from,
'To'=>$to,
'Subject'=>mb_encode_mimeheader($subject, 'ISO-2022-JP'));
$mime = &new Mail_mime();
$mime->setTXTBody($message);
$db_options['type'] = 'db';
$db_options['dsn'] = 'mysql://user:pass@localhost/db';
$db_options['mail_table'] = 'mail_queue';
$mail_options['driver'] = 'smtp';
$mail_options['host'] = 'smtp.com';
$mail_options['port'] = 25;
$mail_options['localhost'] = 'smtp.com';
$mail_options['auth'] = true;
$mail_options['username'] = user';
$mail_options['password'] = 'pass';
$mail_queue =& new Mail_Queue($db_options, $mail_options);
$mail_queue->put($from, $to, $headers, addslashes($mime->get()));
mysql_close($con);
?>
38行目のmysql_real_escape_string()がないと本文にて特定の文字が文字化けしてしまう。
ヘッダーはmb_encode_mimeheaderすることでエスケープされてるみたいだけど。。。setTXTBody()はエンコードされない模様で,$mime->get()してきた文字が化けてしまう。addslashes()でもいけるのだけれど,addslashes()するとインジェクションのターゲットになるという過去記事をみつけてできた最終形態がこれ。
サブジェクトの方はエスケープされてる,ってのがくせもんだよ,これ。。。
人気のある記事
- 無料オンラインストレージ比較 – quanp vs dropbox vs sugarsync
- osqleditでつながらないときにやったことメモ – oracle10g & windows7(xp-mode)
- grubコンソールで止まりbootできない – CentOS 5.4 grub.conf
- Visual Studioでsubversion – AnkhSVN
- google アドレス帳 , iPhone, outlook, becky!間での連絡先共有 その2