mimemail

Главные вкладки

Аватар пользователя Greenberet_UA Greenberet_UA 29 марта 2010 в 23:07

Доброе время суток. Следуйщая проблема:
Создал модуль, в него добавил функцию module_cron()
Она должна каждый день в два часа ночи брать статистику с базы, запихивать ее в Excel файл и отправлять
на email. Создание Excel файла нормально работает, но отправки на email не происходит. В журнале событий тоже пусто.

<?php
$path 
drupal_get_path('module''databasestat');
    
$filename $path "/temp/stats.xls";
    require_once  
$path '/libs/php-excel.class.php';
    
$xls = new Excel_XML('UTF-8'false"stats");
    
$file $xls->generateXML($filename);
    
    
$mime 'application/xls';
    
$attachments[] = array(
                
'filepath' => $file ,
                
'filemime' => $mime ,
        );
     
$mail=variable_get('databasestat_onmail''Greenberet5@yandex.ru');
     
$subject "sasaasaas";
     
$body "asasasasas1221211212";
     
mimemail($sender NULL$mail$subject
            
$body$plaintext $headers=array(), $text NULL$attachments=array(),$mailkey='1') ;
?>

для создания Excel файла использую адаптированый модуль View_to_Excel

<?php
// $Id: php-excel.class.php,v 1.1.2.1 2009/11/04 17:22:40 jkarsum Exp $

/**
 * Simple excel generating from PHP5
 *
 * package Utilities
 * license http://www.opensource.org/licenses/mit-license.php
 * author Oliver Schwarz <oliver.schwarz@gmail.com>
 * version 1.0
 */

/**
 * Generating excel documents on-the-fly from PHP5
 *
 * Uses the excel XML-specification to generate a native
 * XML document, readable/processable by excel.
 *
 * package Utilities
 * subpackage Excel
 * author Oliver Schwarz <oliver.schwarz@vaicon.de>
 * version 1.1
 *
 * todo Issue #4: Internet Explorer 7 does not work well with the given header
 * todo Add option to give out first line as header (bold text)
 * todo Add option to give out last line as footer (bold text)
 * todo Add option to write to file
 */

class Excel_XML
{

  

/**
   * Header (of document)
   * var string
   */
  
private $header "<?xml version=\"1.0\" encoding=\"%s\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">";

  

/**
   * Footer (of document)
   * var string
   */
  
private $footer "</Workbook>";

  

/**
   * Lines to output in the excel document
   * var array
   */
  
private $lines = array();

  

/**
   * Used encoding
   * var string
   */
  
private $sEncoding;

  

/**
   * Convert variable types
   * var boolean
   */
  
private $bConvertTypes;

  

/**
   * Worksheet title
   * var string
   */
  
private $sWorksheetTitle;

  

/**
   * Constructor
   *
   * The constructor allows the setting of some additional
   * parameters so that the library may be configured to
   * one's needs.
   *
   * On converting types:
   * When set to true, the library tries to identify the type of
   * the variable value and set the field specification for Excel
   * accordingly. Be careful with article numbers or postcodes
   * starting with a '0' (zero)!
   *
   * param string $sEncoding Encoding to be used (defaults to UTF-8)
   * param boolean $bConvertTypes Convert variables to field specification
   * param string $sWorksheetTitle Title for the worksheet
   */
  
public function __construct($sEncoding 'UTF-8'$bConvertTypes false$sWorksheetTitle 'Table1')
  {
    
$this->bConvertTypes $bConvertTypes;
    
$this->setEncoding($sEncoding);
    
$this->setWorksheetTitle($sWorksheetTitle);
  }

  

/**
   * Set encoding
   * param string Encoding type to set
   */
  
public function setEncoding($sEncoding)
  {
    
$this->sEncoding $sEncoding;
  }

  

/**
   * Set worksheet title
   *
   * Strips out not allowed characters and trims the
   * title to a maximum length of 31.
   *
   * param string $title Title for worksheet
   */
  
public function setWorksheetTitle ($title)
  {
    
$title preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/"""$title);
    
$title substr ($title031);
    
$this->sWorksheetTitle $title;
  }

  

/**
   * Add row
   *
   * Adds a single row to the document. If set to true, self::bConvertTypes
   * checks the type of variable and returns the specific field settings
   * for the cell.
   *
   * param array $array One-dimensional array with row content
   */
  
private function addRow ($array)
  {
    
$cells "";
    foreach (
$array as $k => $v):
    
$type 'String';
    if (
$this->bConvertTypes === true && is_numeric($v)):
    
$type 'Number';
    endif;
    
$v htmlentities($vENT_COMPAT$this->sEncoding);
    
$cells .= "<Cell><Data ss:Type=\"$type\">" $v "</Data></Cell>\n";
    endforeach;
    
$this->lines[] = "<Row>\n" $cells "</Row>\n";
  }

  

/**
   * Add an array to the document
   * param array 2-dimensional array
   */
  
public function addArray ($array)
  {
    foreach (
$array as $k => $v)
    
$this->addRow ($v);
  }

  

/**
   * Generate the excel file
   * param string $filename Name of excel file to generate (...xls)
   */
  
public function generateXML ($filename 'excel-export')
  {
    
// correct/validate filename
    //$filename = preg_replace('/[^aA-zZ0-9\_\-\.]/', '', $filename);
     
    // deliver header (as recommended in php manual)
    //header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding);
    //header("Content-Disposition: inline; filename=\"" . $filename . "\"");

    // print out document to the browser
    // need to use stripslashes for the damn ">"
    

$f fopen$filename"wb" ) ;
    
fwrite($f,stripslashes (sprintf($this->header$this->sEncoding)));
    
fwrite($f,"\n<Worksheet ss:Name=\"" $this->sWorksheetTitle "\">\n<Table>\n");
    foreach (
$this->lines as $line)
    
fwrite($f,$line);

    

fwrite($f,"</Table>\n</Worksheet>\n");
    
fwrite($f,$this->footer);
    
fclose$f );
    
chmod$filename 0777);
    return 
$filename ;
  }

}

?>

Комментарии