【使用環境】
PHPバージョン5.6
phpMyAdminバージョン情報: 4.5.1
Qdmail ver 1.2.6b
XAMPPにてローカル環境
Qdmailを利用して、複数の宛先にそれぞれ内容を変えて(テンプレート機能利用)メールを送信したいと
考えています。
下記のサイト参考にさせて頂いたサイト
①http://hal456.net/qdmail/toseparate
②http://hal456.net/qdmail/oopbase#p1.5
③http://hal456.net/qdmail/simple_replace_basic#p1.1
下記のソース①にて、複数の宛先にそれぞれメールを送る
ことはできました。
上記③のサイトにて、qdmailにはテンプレート機能(SimpleReplace機能)があり
自動的にリプレース出来るとあるのですが、エラーが出て上手くいきません。
※エラーについてはページ下部に表示したものです。
私のPHPに関する理解が悪いため、非常にちぐはぐな事をしている可能性もあります。
色々調べて見ましたが、テンプレート機能についての情報が少なく手詰まり状態です。
お力を貸していただけますと幸いです。
宜しくお願いします。
ソース① //複数のメールを配信する //こちらの場合は、エラーもなく複数の宛先に送ることが出来ました。 //$_POST["select_mail"]は ["select_mail"]=> array(2) { [0]=> string(26) "******@gmail.com" [1]=> string(25) "*******@yahoo.co.jp" } の状態でPOSTされます。 $mail_title = "メールタイトル"; $select_mail = h($_POST["select_mail"]); try { //メール配信 $mailer = new Qdmail(); //文字コードの設定 $mailer->charset('iso-2022-jp', '7bit'); foreach( $select_mail as $key => $to ){ $mailer -> to($to , null , true ); $mailer->text("メール送信内容"."\n" . "メールアドレス:$select_mail " ); } $mailer->subject($mail_title); $mailer->from('info@gmail.com' ,'***からのメール'); //パラメータ部分 $param = array( 'host' => '', 'port' => 587, 'from' => '******, 'user' => '*******', 'pass' => '*******', 'protocol' =>'SMTP_AUTH', ); $mailer->subject($mail_title); $mailer->smtp(true); $mailer->smtpServer($param); $mailer -> toSeparate( true ); $mailer ->send(); $err_mail = $mailer->errorStatment(); if(!empty($err_mail)){ var_dump($err_mail); throw new Exception("Error Processing Request", 1); } header('Location: ../index.php'); exit(); } catch (Exception $ex) { exit('メール配信が出来ませんでした。' . $ex->getMessage()); } }
ソース② //サイトを参考にテンプレート機能を盛り込んだソース //動きを見るためのものですので、こちらは$_POST["select_mail"]ではなくメールアドレス部分を直書きとしています $data = array( array('name'=>'メールアドレス1の人','mail'=>'******@gmail.com',), array('name'=>'メールアドレス2の人','mail'=>'*******@yahoo.co.jp',), ); try { $mailer = new Qdmail(); $mailer->charset('iso-2022-jp', '7bit'); $subject="こんにちは、%name%さん。"; $body="%name%さんの登録内容をお送りします。名前:%name%"; $from = array( 'from@example.com' , '送り元日本語名' ); $option = array('type'=>'text','option'=>array('simpleReplace'=>true)); $mailer = qd_send_mail( $option , $data , $subject , $body , $from ); //パラメータ部分 $param = array( 'host' => '', 'port' => 587, 'from' => '******, 'user' => '*******', 'pass' => '*******', 'protocol' =>'SMTP_AUTH', ); $mailer->smtp(true); $mailer->smtpServer($param); $mailer ->send(); $err_mail = $mailer->errorStatment(); if(!empty($err_mail)){ var_dump($err_mail); throw new Exception("Error Processing Request", 1); } header('Location: ../index.php'); exit(); } catch (Exception $ex) { exit('メール配信が出来ませんでした。' . $ex->getMessage()); } }
こちらを実行したときに出るエラーは下記のものとなります。
内容から、メールアドレスが有効でないとの記述が予想されますが
解決方法がわからないのが現状です。
Strict Standards: Non-static method QdmailBase::getInstance() should not be called statically in C:\xampp\htdocs\qdmail\qdmail.php on line 46 Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\qdmail\qdmail.php on line 2178 Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.6.15 Qdmail error: OS WINNT ; PHP Version 5.6.15 ; Qdmail version 1.2.6b php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS Qdmail Status debug: 0, log: 0, errorlog: 0 Qdmail error: No send . Because PHP mail function replied error line -> 2190 Qdmail error: Error 'TO' Separate mode in Sendbase function , the Address is -> ******@gmail.com line -> 2096 Qdmail error: Error happen, see upper line -> 2194 Qdmail error: Error 'TO' Separate mode in Sendbase function , the Address is -> *******@yahoo.co.jp line -> 2096 Qdmail error: Send Error line -> 2115 Fatal error: Call to a member function smtp() on boolean in C:\xampp\htdocs\*****.php on line 111
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/24 01:49