无法在Symfony 1.4中获取发送电子邮件的任务

时间:2014-07-24 22:35:09

标签: task symfony-1.4 swiftmailer

我创建了一个任务来自动通过电子邮件发送Symfony 1.4中的报告。此任务和用于在Web中查看的相关模块共享自定义PHP类文件。该任务能够正确地提取数据,但我无法让它发送电子邮件。我试图关注official Symfony 1.4 documentation以及Google搜索中的一些示例,但没有一个能解决我的问题。终端也没有显示任何错误。

我的代码:

<?php

require_once sfConfig::get('sf_lib_dir').'/vendor/sesame/reports/reports.class.php';
//use reports;

class reportsTask extends sfBaseTask
{
  protected function configure()
  {
    // // add your own arguments here
    // $this->addArguments(array(
    //   new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'),
    // ));

    $this->addOptions(array(
      new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'),
      new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
      new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'),
      new sfCommandOption('type', null, sfCommandOption::PARAMETER_OPTIONAL, 'The output type of the report', 'email')
      // add your own options here
    ));

    $this->namespace        = '';
    $this->name             = 'reports';
    $this->briefDescription = '';
    $this->detailedDescription = <<<EOF
The [reports|INFO] task does things.
Call it with:

  [php symfony reports|INFO]
EOF;
  }

  protected function execute($arguments = array(), $options = array())
  {
    $databaseManager = new sfDatabaseManager($this->configuration);
    $databaseManager->loadConfiguration();
    $reports = new reports();
    $output = $reports->buildReport($options['type']);
    switch($options['type']){
        case 'csv':
            echo $output;
            break;
        case 'email':
            $message = $this->getMailer()->compose($output['from'], $output['to'], $output['subject']);
            $message->setBody($output['body']['content'], $output['body']['type']);
            $message->attach(Swift_Attachment::newInstance($output['attachment']['content'], $output['attachment']['name'], $output['attachment']['type']));
            $this->getMailer()->sendNextImmediately()->send($message) or die('email failed to deliver');
            $output = array('status'=>'success', 'to'=>$output['to']);
        default:
            $this->logSection('results', json_encode($output));
    }
  }
}

从项目根目录尝试终端命令:

php symfony reports

通往正确道路的任何答案都将是最有帮助的。请记住,我需要继续使用1.4版本。服务器能够发送电子邮件,我的模块版本只能在URL调用时执行。我需要它在命令行上运行,所以我可以设置一个cron。

0 个答案:

没有答案