Несколько вещей здесь не так.
Прежде всего, я вижу, что вы используете старую версию PHPMailer, поэтому обновитесь, желательно с помощью composer.
Вы создаете экземпляр, подобныйthis:
$mail = new PHPMailer(true);
Это true
означает, что PHPMailer будет генерировать исключения, но у вас нет блока try / catch, обернутого вокруг вызовов вашего метода PHPMailer, поэтому, когда произойдет исключение, ваш код умрет.Либо добавьте блоки try / catch, где это необходимо, либо удалите этот параметр true
для обработки ошибок с помощью возвращаемых значений.
Я ожидаю, что он умирает здесь:
$mail->addAttachment("GeneratedPDFFiles/Invoices/Invoice $last_id.pdf");
Когда вы говорите "Theфайл присутствует в каталоге, так что это не проблема ", вы предполагаете, что это правда - нет; проверка .Этот метод вызовет исключение (если вы не удалили этот параметр true
в конструкторе), если файл не существует или если у сценария нет разрешения на его чтение.
Вы использовалиотносительный путь, но ваш рабочий каталог может оказаться не там, где вы думаете.Безопаснее использовать абсолютный путь, например, добавляя местоположение текущего скрипта (который может отличаться от .
).Какова бы ни была причина, рекомендуется также проверить возвращаемое значение:
$file = __DIR__ . "/GeneratedPDFFiles/Invoices/Invoice $last_id.pdf";
if (!$mail->addAttachment($file)) {
die('Could not open file ' . $file);
}