Я работаю над приложением Laravel, в котором мне нужно отправлять электронные письма с вложениями, используя собственный класс Mailable (
Код: Выделить всё
PdfEmail). Электронное письмо должно включать динамически создаваемый PDF-файл и другие вложения из модели сервисного отчета.
[b]Код:[/b]
Я реализовал 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
Мобильная версия