2014-09-18 2 views
1

Как я могу отправить почту с несколькими вложениями в laravel?Laravel Mail :: отправить с несколькими приложениями

Это мой Laravel контроллер:

public function send_approve_mail($to, $subj, $tmp, $path) { 

    $_POST['subj'] = $subj; 
    $_POST['to'] = $to; 

    foreach ($path as $key => $value) { 
     $path[$key] = '../public/assets/fax/extra/' . $value; 
    } 

    $_POST['attach'] = $path; 

    $msg = "test message here"; 
    $data_mail = Mail::send($tmp, array('msg' => $msg), function($message) { 
       $message->from('[email protected]', $_POST['subj']); 
       $message->to($_POST['to'])->subject($_POST['subj']); 
       $message->attach($_POST['attach']); 
      }, true); 

    Help::send_mail($data_mail, array($_POST['to']), array('[email protected]')); 
} 

Все вложения доступны в массиве $path.

Показана ошибка basename() expects parameter 1 to be string, array given.

Но когда я использую $_POST['attach'] = $path[0]; вместо $_POST['attach'] = $path;, почта получена только с одним приложением.

ответ

11

Насколько я знаю, вы можете просто использовать цикл for для всех вложений. Некоторые это так:

$data_mail = Mail::send($tmp, array('msg'=>$msg), function($message) use ($path) { 
    $message->from('[email protected]', $_POST['subj']); 
    $message->to($_POST['to'])->subject($_POST['subj']); 
    $size = sizeOf($path); //get the count of number of attachments 

    for ($i=0; $i < $size; $i++) { 
     $message->attach($path[$i]); 
    } 
},true); 
+0

он прекрасно работает с вашим предложением ... Спасибо –

+1

$ Сообщение-> присоединять ($ путь [я]); должен быть $ message-> attach ($ path [$ i]); –

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