Ошибка типа в MIME-части Symfony при отправке вложений с помощью Laravel MailablePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ошибка типа в MIME-части Symfony при отправке вложений с помощью Laravel Mailable

Сообщение Anonymous »

Контекст:
Я работаю над приложением Laravel, в котором мне нужно отправлять электронные письма с вложениями, используя собственный класс Mailable (

Код: Выделить всё

PdfEmail). Электронное письмо должно включать динамически создаваемый PDF-файл и другие вложения из модели сервисного отчета.
[b]Код:[/b]
Я реализовал PdfEmail
класс, который включает методы для настройки конверта электронной почты, содержимого и вложений. Вложения извлекаются из хранилища, а их MIME-типы определяются с помощью ExtensionMimeTypeDetector из пакета League\MimeTypeDetection. Вот соответствующая часть моего класса PdfEmail:

Код: Выделить всё

public function attachments(): array
{

// save pdf temporarily
// Define the directory where the PDF should be saved
$directory = storage_path('app/public/service-reports/' . $this->serviceReport->id);

// Check if the directory exists
if (!is_dir($directory)) {
// Create the directory, and make it recursive to create nested directories if necessary
mkdir($directory, 0755, true);
}

// Now save the PDF in the created directory
$pdfPath = $directory . '/service-report.pdf';
$this->pdf->save($pdfPath);

$attachments = [
Attachment::fromStorage(
path: 'service-reports/' . $this->serviceReport->id . '/service-report.pdf',
)->withMime('application/pdf'),
];

foreach ($this->serviceReport->attachments as $attachment) {

$attachments[] = Attachment::fromStorage(
path: $attachment->file,
)->withMime($this->getMimeType($attachment->file));
}
// check each attachment content type
foreach ($attachments as $attachment) {
\Log::info($attachment->mime);
}

return $attachments;
}
Проблема:
При отправке электронного письма я обнаруживаю ошибку TypeError от компонента Symfony, используемого Laravel. Сообщение об ошибке:

Код: Выделить всё

TypeError: The body of "Symfony\Component\Mime\Part\TextPart" must be a string, a resource, or an instance of "Symfony\Component\Mime\Part\File" (got "null"). in /path/to/public_html/vendor/symfony/mime/Part/TextPart.php:52
Эта ошибка возникает при отправке электронного письма. Похоже, это связано с тем, как вложения обрабатываются или добавляются в электронное письмо. Однако код работает совершенно нормально в моей локальной настройке, когда я развертываю его на хостинге, он происходит только там
< strong>Попытки решения:
  • Я зарегистрировал типы mime для каждого вложения, и они не равны нулю
    < /ol>
    Вопросы:
  • Что может быть причиной этой ошибки типа в Symfony MIME-компонент при добавлении вложений?
  • Есть ли какие-либо проблемы с тем, как я использую метод Attachment::fromStorage() или с тем, как я устанавливаю типы MIME для вложения?
  • Есть ли лучший способ обработки вложений в Laravel Mailables, позволяющий избежать этой проблемы?
Будем очень признательны за любые идеи и предложения!

Подробнее здесь: https://stackoverflow.com/questions/776 ... l-mailable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»