zoukankan      html  css  js  c++  java
  • php的yii框架开发总结8

    EMailer是一个简单的封装PHPMailer类。利用这个扩展可以实现发邮件的功能。

    下载地址:http://www.yiiframework.com/extension/mailer/

    下载解压把mailer文件夹放到protectedextensions下

    在configmain.php文件中加入以下几条语句,应用到系统当中:

    1 'import'=>array(
    2         'application.models.*',
    3         'application.components.*',
    4         'application.extensions.*',//多加这一句引用
    5     ),

    'components'中加入:

    1 'mailer'=>array(
    2             'class'=>'application.extensions.mailer.EMailer',
    3             'path Views'=>'application.views.email',
    4             'pathLayouts'=>'application.views.email.layouts',
    5             ),

    然后我们就能很容易的使用发邮件的功能了:

     1 public static function sendEmails()
     2     {    $mail=Yii::createComponent('application.extensions.mailer.EMailer');
     3         $contents=Dailyreport::getReports();
     4             $message=Dailyreport::getReports();
     5             $mail->IsSMTP();
     6             $mail->Host='smtp.163.com';
     7             $mail->Port=25;
     8             $mail->SMTPAuth=true;
     9             //$mail->SMTPSecure = 'ssl'; 
    10             $mail->SMTPDebug=true;
    11             $mail->Username='***@163.com';
    12             $mail->Password="******";
    13             $mail->From='***@163.com';
    14             $mail->FromName='回声';
    15             $mail->AddReplyTo('***@163.com');
    16             $models=User::model()->findAll();
    17             foreach($models as $model)
    18             {
    19                 if($model->receive_email==1)
    20                     $mail->AddAddress($model->email);
    21             }
    22             $mail->CharSet='UTF-8';
    23             $mail->Subject='日报';
    24             $mail->Body=$message;
    25             $mail->IsHTML(true);
    26             if($message!=null && $mail->Send())
    27             {
    28                 echo "发送成功";
    29                 return true;
    30             }
    31             else return false;
    32     }

    代码很简单明了,我们可以在一个页面中调用该方法,加载页面就可以实现发邮件的功能了。

    但是,经常会遇到不能连接到邮箱服务的问题,我查了很多资料,基本上是下面的原因:

    把extensionsmailerphpmailerclass.phpmailer.php文件中的小写'smtp'改成大写:

    public function IsSMTP() {
        $this->Mailer = 'SMTP';//第一处
      }

    switch($this->Mailer) {
            case 'sendmail':
              return $this->SendmailSend($header, $body);
            case 'SMTP'://第二处
              return $this->SmtpSend($header, $body);
            case 'mail':
            default:
              return $this->MailSend($header, $body);
          }

    把php.ini文件中的:
    extension=php_openssl.dll
    extension=php_sockets.dll
    这两句去掉注释,即去掉前面的分号';'。

    我写了一个简单的view视图文件:

    1 <div class="span-19">
    2     <div id="content">
    3         <?php echo '开启定时服务'; ?>
    4     </div><!-- content -->
    5 </div>
    6 <?php
    7     DailyreportController::sendEmails();
    8 ?>

    只要打开该页面就实现了发邮件的功能:

    暂时写到这里,自动发邮件功能怎么实现呢,下节再讲。

  • 相关阅读:
    iBatis系列一
    iBatis入手案例
    需求分析7字诀
    自我意识为王
    物联网关键技术之一
    物联网之二:传感器无线网络
    物联网之二:传感器无线网络
    物联网时代之一
    项目经理的心法
    项目管理规划
  • 原文地址:https://www.cnblogs.com/nannanITeye/p/3250736.html
Copyright © 2011-2022 走看看