Laravel: прикрепить удаленный файл к электронной почте
У меня есть система, которая позволяет пользователям загружать свои вложения локально, чтобы отправить их позже. и у меня есть другой сервер, который отправляет электронные письма в соответствии с заданиями в базе данных (2 разных сервера)Вот оригинальный код, который отправляет электронную почту в laravel:
$path = "/home/example.com/public_html/storage/users/id/$userId/uploads/attachments/";
Log::info('Mail attachments are: '.$this->mailAttachments);
if($this->mailAttachments) {
Log::info('we have attachments');
foreach(json_decode($this->mailAttachments) as $item){
$toAttach = $path.$item->name;
$markdown->attach($toAttach, [
'as' => $item->name,
'mime' => $item->type
]);
}
}else{
Log::info('No attachments here');
}
Теперь у меня проблема с прикреплением файлов с сервера № 1 на сервере № 2, вот что я попробовал:
- Я пытался прикрепить файлы с URL, значит, вместо отправки полного пути
/home/example.com/public_html/storage/users/id/$userId/uploads/attachments/test.jpg
(что невозможно, потому что это другой сервер с другим корнем) Я изменил его на URL ( https://example.com/attachment/test.jpg), он не работает и возвращает ошибку:
Swift_IoException: невозможно открыть файл для чтения
Я попытался сделать это с fileGetContent, как показано ниже:
//because its ssl Im adding this: $arrContextOptions=array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false)); $toAttach = file_get_contents($path.$item->name, false, stream_context_create($arrContextOptions)); //Before I had: $toAttach = $path.$item->name; $markdown->attachData($toAttach, [ 'as' => $item->name, 'mime' => $item->type ]);
Но здесь, это возвращает мне другую ошибку:
ErrorException: preg_match () ожидает, что параметр 2 будет строкой, массив указан в /...../vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php:189
Вы можете мне помочь? кто-нибудь пробовал прикреплять файлы удаленно? может поделиться папкой с сервера как нибудь?
Спасибо!