▼ CodeIgniterで日本語メール送信
携帯デコメもOK
include('qdmail.php');
class Mail extends Controller {
function sendmail(){
$data = array('hello'=>'こんにちは');
$content=$this->load->view('mailview',$data,true);
qd_send_mail('html','address@example.com','件名',$content,'from@example.com');
}
}
$this->load->view メソッドの第3引数をtrueにするのがポイントです。これで、$this->load->viewは画面に返すのでなく、画面に書くべき内容を返り値として渡してくれます。
- TB-URL http://hal456.net/qdmail/097/tb/
▼ Symfonyで日本語メール送信(携帯デコメもOK)
SYmfonyで簡単に携帯デコメ、添付ファイル、HTMLメールなど多彩なメールを送信することができます。
2つの送信方法
Symfonyでメールを送信する方法は大きく2つあります。(Symfony1.1.2にて動作確認)1 ビューに送信を任す方法
2 コントローラーで送信する方法
いずれにせよ、何らかの形で、qdmail.phpをインクルードしてください。
また、それぞれのコントローラーに対応するビューも用意してください。
1 ビューに送信を任す方法
include('qdmail.php'); class mymoduleActions extends sfActions { public function executeSendEmail() { $this->sendEmail('mymodule', 'SendQd'); } public function executeSendQd() { $mail = new sfQdmail(); $mail -> addAddress('address@example.com','日本語宛先'); $mail -> setFrom('from@example.com','日本語フロム'); $mail -> setSubject('test Symfony'); $mail -> setMailer('mail'); $this->mail = $mail; $this->mytext = 'Text example'; } }この方式の場合、$mail->send()をつけてはいけませんので、注意してください。
だって、ビューに送信をお任せするわけですから。
SendQdに対応するテンプレートをご用意下さい。それがメール本文となります。
使い方は、sfMailと全く同じです。(いくつか使えないメソッドはありますが)
なお、以下のコンフィグファイルに、デフォルト設定が入っています。
sf_sandbox\data\symfony\config\mailer.yml
default: deliver: on mailer: mail domain: localhost.localdomain hostname: localhost port: 25 username: '' password: '' wordwrap: 80 .headers: priority: 3 content_type: text/plain charset: utf-8 encoding: 8bit
2 コントローラーで送信する方法
include('qdmail.php'); class mymoduleActions extends sfActions public function executeSendEmail() { $mail = new sfQdmail(); $mail -> addAddress('address@example.com','日本語宛先'); $mail -> setFrom('from@example.com','日本語フロム'); $mail -> setSubject('test Symfony'); $mail -> setMailer('sendmail'); $content = $this->getPresentationFor('mymodule','content'); $mail -> html($content); $mail -> send(); } public function executeContent() { $this->mytext = 'Text example'; } }この方式の場合は、 ->send()が必要です。
なんせ、コントローラーが送信する方法ですから。
# 2008年11月21日(金) 午後6時46分
すばらしいライブラリありがとうございます。使ってみようとsymfonyで使ってみると、PHP5でのエラー(Strict Standards)が発生します。
対応していただけると嬉しいです。^^;
# 2008年11月21日(金) 午後9時39分
大変恐縮ですが、ソースコード及びどこでどのようなエラーが発生しているかをお教え下さい。
# 2008年11月21日(金) 深夜1時20分
以下のエラーが発生しました。
Strict Standards: Assigning the return value of new by reference is deprecated in /path/qdmail.1.2.6b/qdmail.php on line 661
Strict Standards: Assigning the return value of new by reference is deprecated in /path/qdmail.1.2.6b/qdmail.php on line 3677
Strict Standards: Assigning the return value of new by reference is deprecated in /path/qdmail.1.2.6b/qdmail.php on line 3771
Strict Standards: Assigning the return value of new by reference is deprecated in /path/qdmail.1.2.6b/qdmail.php on line 3820
Strict Standards: Declaration of QdmailComponent::smtpObject() should be compatible with that of QdmailBase::smtpObject() in /path/qdmail.1.2.6b/qdmail.php on line 3734
直接動作に影響があるエラーではないのですが。
# 2008年11月21日(金) 深夜2時04分
E_STRICTエラーはphp4では有効だったけど、PHP5では推奨しないものに対して発生するエラーです。ifでバージョン毎に分岐してわければ回避は可能とは思いますが、現状のPHP4でも動作させようという目論見では、残念ながら回避できておりません。
今後の課題にさせていただきます。
# 2008年11月22日(土) 午前5時21分
ご確認ありがとうございます。
私のようにPHP5前提で開発を行う場合はポリシーとしてE_STRICTは出さないようにしているところも他にもあるかと思います。
ただ、ご回答いただいたようにPHP4のことを考慮されているという点から大変なのも非常に理解しています。
PHPMailerなどのようにPHP4版とPHP5版と分けてしまうというのもありかなとは思いますがそれまた管理が大変ですよね。
ありがとうございました。
# 2010年02月22日(月) 午後7時14分
通りすがりですが、上記のエラーは、
new sfQdmail();
のところで発生するエラーですよね?
エラー制御演算子 (http://www.php.net/manual/ja/language.operators.errorcontrol.php) を使用して...
@new sfQdmail();
としてしまえば、エラー表示は抑制できますよ。
根本解決ではないですが...
# 2011年09月12日(月) 午後9時49分
PHP5なら以下のような感じでも問題ないように思います。
PHP4でも使うならここでバージョンを見て、場合分けすればいいような。
//$instance[0] = & new Qdmail();
$instance[0] = new Qdmail();
- TB-URL http://hal456.net/qdmail/096/tb/
▼ フレームワークでQdmailを使う
記事リスト
- CakePHPメールコンポーネントとして送信する (2008-04-24)
- Symfonyで日本語メール送信(携帯デコメもOK) (2008-09-25)
- CodeIgniterで日本語メール送信 (2008-09-25)
- ZendFrameWorkで日本語完璧メール (2008-09-27)
- Ethnaで日本語メール送信 (2008-09-27)
- その他のフレームワーク対応 (2008-09-29)
- TB-URL http://hal456.net/qdmail/095/tb/