想在thinkphp框架中使用zendframe mail的功能,故把操作過程記錄以下:
把zendframe Lib下的文件目錄全部復制到thinkphp的org目錄下,(ThinkPHP/Extend/Library/ORG/)這是thinkphp3.0的目錄路徑,其他版本可能有所不同。然后寫個腳本把文件的后綴由.php改為.class.php
然后就可以調用了,但是如果一個一個的去引用文件會很不爽,所以thinkphp的Config.php文件中加入'APP_AUTOLOAD_PATH' =>'ORG',(自定義搜索路徑)。不過這還沒完,由于thinkphp的autoload方法里并不能映射zend的類名到相應的文件路徑,不得已只好修改thinkphp的autoload方法(通過類名中的下劃線來分割拼裝路徑)。同時還要修改import函數(因為import函數會自動將最后一段的字符串當作類名)
然后,就可以使用我要用的zend_mail類了,代碼下面給出.
- autoload//shi_mody
- $classPart = explode('_',$class);
- $class2 = implode('.',$classPart);
- //shi_mody end
- foreach ($paths as $path){
- //var_dump($path.'.'.$class2);
- if(import($path.'.'.$class2))//shi_mody:$class=>$class2
- // 如果加載類成功則返回
- return ;
- }
import函數:
- if(strpos($class,'ORG/Zend')==0){
- $classname = preg_replace('////','_',substr($class,4));
- }else{
- $classname = basename($class);
- }
- if (!class_exists($classname,false)) {
- // 如果類不存在 則導入類庫文件
- return require_cache($classfile);
- }
改文件名腳本:
- $dir = "Validate/";
- traceDir($dir,"reClass");
- function reClass($file){
- if(strpos($file,"class.php")){
- $nFile = preg_replace('//.php/',"class.php",$file);//文件名后綴記得滿足條件
- rename($file,$nFile);
- }
- }
- function traceDir($dir,$callback){
- $h = opendir($dir);
- while(($file=readdir($h))){
- if($file=="." || $file=="..")
- continue;
- if(is_dir($dir.$file)){
- traceDir($dir.$file."/",$callback);
- }else{
- call_user_func_array($callback,array($dir.$file));
- }
- }
- }
調用zend_mail:
- class RssAction extends BaseAction{
- public function send(){
- $email = addslashes($_POST['email']);
- $title = addslashes($_POST['title']);
- $cont = $_POST['cont'];
- // import("ORG.Zend.Mail");//這里可以不用import了,另外tp框架里面默認的zend類庫是放在ThinkPHP/Extend/里面的,如果使用tp默認的方法,則需要事先import,這時候如果類文件里面又引用了其他的類名,就需要實現import一大串的類
- $smtp = new Zend_Mail();
- $host="smtp.qq.com";
- $config = array(
- "port"=>25,
- "auth"=>"Login",
- "username"=>"[email protected]",
- "password"=>"werwer23"
- );
- try{
- $smtpTrans = new Zend_Mail_Transport_Smtp($host,$config);
- $mail = new Zend_Mail();
- $mail->setDefaultTransport($smtpTrans);
- $mail->setBodyHtml($cont);
- $mail->setFrom($config["username"],"kindlerss.net")
- ->addTo($email, $email)
- ->setSubject($title);
- $mail->send();
- }catch(Exception $ex){
- echo $ex->message;
- }
- }
- }
新聞熱點
疑難解答
圖片精選