2012-06-08 2 views
0

Я пытаюсь отправить электронные письма с помощью компонента электронной почты CakePHP 1.3 через консоль/cron. Письма отправляются &, но без вложения.CakePHP: отправить электронную почту с вложением через консоль

Когда вы закончите с помощью формы, электронные письма будут отправлены с вложением успешно. Я попытался добавить
$ this-> email-> путей файлов,
(от How do I send an email with an attachment in CakePHP 2.0?)
но вложения все еще не отправлено.

Моего код, как показано ниже:

$email =& new EmailComponent(); 
$email->reset(); 
$email->initialize($controller);   
$email->delivery = $emailConfigurations['delivery'];   
$email->from = $emailConfigurations['from']; 
$email->replyTo = $emailConfigurations['replyTo']; 
$email->return = $emailConfigurations['return']; 
$email->template = 'default'; 
$email->sendAs = $emailConfigurations['sendAs']; 

if (strcasecmp($email->delivery, 'smtp') == 0) { 
    $email->smtpOptions = array(
     'timeout' => $emailConfigurations['smtpTimeout'], 
     'port' => $emailConfigurations['smtpPort'], 
     'host' => $emailConfigurations['smtpHost'], 
     'username' => $emailConfigurations['smtpUsername'], 
     'password' => $emailConfigurations['smtpPassword'] 
    ); 
} 

$email->to = $newEmail['mail_to']; 
$email->subject = $newEmail['message_title']; 

if ($newEmail['attachment_name'] && $newEmail['attachment_tmp']) { 
    $attachedFilePath = WWW_ROOT . 'files' . DS . 'email_attachments' . DS ; 
    $attachedFile = $newEmail['attachment_tmp']; 

    $this->Email->filePaths = array($attachedFilePath); 
    $this->Email->attachments = array($attachedFile); 
} 

if($email->send($newEmail['message'])){ 
    $this->out(date('Y-m-d H:i:s')." Email sent : ".$newEmail['id']); 
} else { 
    $this->out(date('Y-m-d H:i:s')." Email not sent : ".$newEmail['id']); 
} 

Таким образом, в основном мой вопрос, как я получаю письмо, отправленное с приложением, когда я запускаю скрипт, с помощью консоли/хрон.

Заранее спасибо.

+0

Если вы очередями и отправки электронной почты с помощью консоли, вы можете иметь некоторый интерес в этом плагине. Это может сократить некоторые из ваших работ. https://github.com/jeremyharris/queue_email/ – jeremyharris

+0

Я посмотрю ваш плагин, как только вернусь к заданиям cron. Здесь вы сможете обновить результаты. Спасибо за ваше время. – nefertina10

ответ

0

Снимите заднюю DS из списка путей, так как торт не подстригать:

$attachedFilePath = WWW_ROOT . 'files' . DS . 'email_attachments'; 
+0

Спасибо, но удаление DS не сработало для меня. – nefertina10

+0

Вы пытались использовать только полный путь вложения вместо использования 'Email-> filePaths' var? Подобно '$ this-> Email-> attachments = array (WWW_ROOT. 'Files'. DS. 'Email_attachments'. DS. $ NewEmail ['attachment_tmp']). Кроме того, проверьте наличие файлов в этом месте с помощью 'file_exists()'. – jeremyharris

+0

Да, у меня есть и файл действительно существует. Но все еще нет прикреплений в письмах. С нетерпением ждем вашего плагина и надеемся, что это поможет решить проблему (и, надеюсь, пролить свет на то, что настоящая причина для моей не работает). – nefertina10

Смежные вопросы