人気ブログランキング |
2012年 11月 29日 ( 2 )
(PHP)mb_send_mailでCCを指定したい
mb_send_mail関数でメールを送る方法を(PHP)日本語メール送信で書きましたが、CCやBCCを指定したい時は、第四引数のヘッダ指定部分に以下のように指定してやればいいようです。
//mb系関数を使うための前処理
mb_language("Japanese");
/* 内部文字エンコーディングをUTF-8に設定 (UTF-8でスクリプト書いているため)*/
mb_internal_encoding("UTF-8");
 
//メール送信
$mailTo = "info@example.com";
$mailFromAddr = "<info@example.com>";
$mailSubject = "メール題名";
$mailCc = "hogecc@example.com";
$mailBcc1 = "hogebcc1@example.com";
$mailBcc2 = "hogebcc2@example.com";
 
//送信元に日本語付加
$mailFrom = mb_encode_mimeheader(mb_convert_encoding("【自動送信フォーム】","JIS","UTF-8")). $mailFromAddr;
 
 
//メール本文。
$mailBody = "メール本文。";
 
$mailhead = "From:" . $mailFrom ;
$mailhead .= "\n";
$mailhead .= "Cc:" . $mailCc;
$mailhead .= "\n";
$mailhead .= "Bcc:" . $mailBcc1;
$mailhead .= "," . $mailBcc2;
 
 
//メール送信(送信先、 件名、 本文、 メールヘッダ)
if( mb_send_mail( $mailTo , $mailSubject , $mailBody ,mailhead ) ){
//メールが正常に送れたら
$res = "送信成功";
}else{
//メールが送れなかったら
$res = "送信失敗";
}
echo $res;

参考:
PHPのmb_send_mailでCCやBCCを指定する方法 | 自由が丘で働くWeb屋のブログ
by Jehoshaphat | 2012-11-29 23:20 | PHP開発
(PHP)Smartyを使っているがShift-JISで出力したい
Shift-JISで作られているCGIのサイトをPHP(テンプレートエンジンとしてSmarty使用)に移行してるんですが、やはり移行後もわけあってShift-JISでないとダメなようです。
で、SmartyのテンプレートファイルをShift-JISで作るとエラーが。。。
どうやら「必須」という文字がSmartyのメタ文字「{」となっちゃってるようです。
やはり、Shift-JISのファイルは作っちゃダメだなということで、テンプレートファイル、PHPファイル共にUTF-8で書き、Smartyのアウトプットフィルタを使って出力時にShift-JISに変換することとしました。

以下のような感じです。
//Smarty読み込み(ドキュメントルート外のSmartyクラスにアクセス)
require_once('Smarty.class.php');
//Smartyオブジェクト作成
$smarty = new Smarty();
$smarty->template_dir = "/smarty/templates";
$smarty->compile_dir = "/smarty/templates_c";
$smarty->cache_dir ="/smarty/cache";
 
//アウトプットフィルタを使用し文字コード変換
$smarty->registerFilter("output","filterSjis");
ini_set("default_charset", "Shift_JIS");
 
//テンプレート表示
$smarty->display("hoge.tpl");
 
//smartyアウトプットフィルタ
function filterSjis($buff, &$smarty){
return mb_convert_encoding($buff,"SJIS","UTF-8");
}


参考サイトでは $smarty->register_outputfilter を使っているですが、Smarty3でこのメソッド使うと、"Notice: function call 'register_outputfilter' is unknown or deprecated." みたいなエラーになります。
Smarty3系からは $smarty->registerFilter(タイプ,コールバック関数); としないといけないようです。


参考:
Smartyのアウトプットフィルタを使ってみる kawama.jp
エピゴーネンで | register_prefilterの挙動を変えるとかなしにしようぜSmartyさん
SJISページでのSmartyの使い方 | ガイドミー管理者日記
by Jehoshaphat | 2012-11-29 23:18 | PHP開発