«Невозможно открыть файл для чтения», прикрепление PDF из хранилища к почтовому - PullRequest
0 голосов
/ 21 октября 2019

привет, у меня сейчас проблема

Я делаю "автоматическое вложение PDF на страницу электронной почты". как это работает, так это то, что в каждой строке есть кнопка электронной почты, при нажатии которой пользователь будет перенаправлен на страницу, которая автоматически присоединяет PDF-файл, сохраненный в папке хранилища, в соответствии с идентификатором. я попытался выполнить дамп дамп PDF, и он показывает содержимое файла PDF на тарабарском языке, что, я полагаю, нормально, если делать дамп дамп файлов PDF. Тем не менее, я получаю сообщение об ошибке «не удается открыть файл для чтения». вот мой код:

Контроллер:

  public function sendToCompany(Request $request){

    $filename = request('attachedLetter');
    $letter = \Storage::get('public/coverLetter/'.$filename);


    $data = array(
        'email' => request('company_email'),
        'subject' => request('email_subject'),
        'message' => request('email_message'),
        'attachedLetter' => $letter
    );


        \Mail::to($data['email'])->send(new SendEmailToCompany($data['subject'], $data['message'], $data['attachedLetter']));
}

Отправка по почте:

public $content;

// public $attach;

/**
 * Create a new message instance.
 *
 * @return void
 */
public function __construct($subject, $content, $files)
{
    $this->subject = $subject;
    $this->content = $content;
    $this->attach = $files;
}

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    $file = $this->attach;
    dd($file);
    return $this->markdown('email.emailToCompany')->attach($file);

}

любая помощь будет принята с благодарностью. спасибо!

1 Ответ

0 голосов
/ 21 октября 2019

Метод attach ожидает путь к файлу, а не содержимое файла. Если вы хотите прикрепить файл из хранилища, вы можете использовать attachFromStorage. Если вы хотите прикрепить необработанные данные (содержимое файла), вы можете попытаться использовать метод attachData.

Документы Laravel 6.x - Почта - Написание почтовых сообщений - Вложения

Вы можете передать тот же путь, который вы передаете Storage::get методу attachFromStorage:

$path = 'public/coverLetter/'. $filename;

... SendEmailToCompany($data['subject'], $data['message'], $path) ...

, затем в почтовом ящике вы можете попробовать:

return $this->markdown('email.emailToCompany')->attachFromStorage($this->attach);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...