CakePHP如何发送电子邮件通知

时间:2013-05-01 08:38:52

标签: email cron cakephp-2.0

我正在尝试通过我的应用中的cron作业向某些用户发送电子邮件通知。

经过几个小时的阅读,我明白最好的方法就是使用Shell。

请有人帮我理解如何做到这一点,我如何使用myShell类的不同操作发送不同的通知?我的意思是cron如何访问myShell的不同动作。

例如。

<?php
  class MyShell extends Shell { 

    function send_task_notifications(){
      .... //this must send email every day at 00:00 am
    }

    function send_new_post_notifications() {
      .... //this must send email every week//
    }

  }
?>

这两个操作都在MyShell类中。

那么如何通过Cron调用其中一个,这个MyShell类是否可以通过URL访问?

1 个答案:

答案 0 :(得分:1)

您的shell需要以下列方式进行更改,您需要根据该参数传递参数,它将执行电子邮件通知/推送通知。将您的功能移动到可以使用的组件

<?php
  class MyShell extends Shell { 

    function main()
    {
        $option = !empty($this->args[0]) ? $this->args[0] : ”;
        echo ‘Cron started without any issue.’;

        App::import(‘Component’, 'MyOwnComponent');
        $this->MyOwnComponent = &new MyOwnComponent();
        switch ($option)
        {
            case 'task_notifications':
                    $this->MyOwnComponent->send_task_notifications();
                break;
           case 'post_notifications':
                    $this->MyOwnComponent->send_new_post_notifications();
                break;
            default:
            echo 'No Parameters passed .';
        }

    }
  }
?>

您的组件文件如下

<?php
class MyOwnComponent extends Object
{
 function send_task_notifications(){
      .... //this must send email every day at 00:00 am
    }

 function send_new_post_notifications() {
      .... //this must send email every week//
    }
}

?>

有关详细信息,请参阅链接http://cakephpsaint.wordpress.com/2013/05/15/6-steps-to-create-cron-jobs-in-cakephp/