Во-первых, я очень надеюсь, что вы на самом деле не используете PHP 5.2.
Вы хорошо умеете стрелять себе в ногу здесь:
$mail->addCustomHeader('Content-ID', '20cca', 'Content-Type', 'multipart/mixed', 'boundary='.$mime_boundary.'\n');
$mail->Body = "--$mime_boundary\n";
Причина, по которой вы используете PHPMailer, заключается в том, что вам не нужно делать такие вещи; о тебе позаботятся. Когда вы попытаетесь подорвать это так, это приведет к беспорядку, как вы обнаружите.
Вы приложили усилия, чтобы обернуть ваш код PHPMailer в блок try / catch, но вы не сказали PHPMailer генерировать исключения (путем передачи true
в конструктор), и ваш блок catch пуст, поэтому ничего не делает.
Я переписал его, чтобы исправить эти вещи, и более логично группировать настройки:
include dirname(__FILE__) . '/../views/pdf-receipt.php';
function sendMailTest(
$recipient_mail,
$recipient_name,
$from_mail,
$from_name,
$subject,
$body,
$body_without_html,
$attachments = null
) {
require_once 'folder/PHPMailer-5.2.26/PHPMailerAutoload.php';
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'email-smtp.eu-west-1.amazonaws.com';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'XXX';
$mail->Password = 'XXX';
$mail->CharSet = 'UTF-8';
$mail->setFrom($from_mail, $from_name);
$mail->addAddress($recipient_mail, $recipient_name);
$mail->Subject = $subject;
$mail->Body .= $body;
$mail->AltBody = $body_without_html;
$mail->isHTML(false);
$data = '%PDF-1.2 6 0 obj << /S /GoTo /D (chapter.1) >>';
$mail->addStringAttachment($data, 'receipt.pdf');
$mail->send();
} catch (Exception $e) {
echo 'E-mail not sent. Error: ', $mail->ErrorInfo, PHP_EOL;
}
}