Добрый день. Я сделал небольшую функцию для отправки письма с прикрепленным аудиофайлом.
function sendHtmlEmailWithAttachment($to, $subject, $htmlContent, $attachmentPath) {
$boundary = uniqid('boundary_');
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$headers .= "To: $to\r\n";
$headers .= "Subject: $subject\r\n";
$headers .= 'From: bot@site.com' . "\r\n".'Reply-To: bot@site.com."\r\n".'X-Mailer: PHP/'.phpversion();
$body = "--$boundary\r\n";
$body .= "Content-Type: text/html; charset=UTF-8\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= chunk_split($htmlContent, 998) . "\r\n";
$body .= "--$boundary\r\n";
$body .= "Content-Type: audio/mpeg; name=\"" . basename($attachmentPath) . "\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"" . basename($attachmentPath) . "\"\r\n\r\n";
$body .= chunk_split(base64_encode(file_get_contents($attachmentPath))) . "\r\n";
$body .= "--$boundary--";
if (mail($to, $subject, $body, $headers)) {
return true;
} else {
return false;
}
}
Но столкнулся с проблемой, Yandex мои письма принимает и все отлично. Аудио Файл доставляется, текст письма тоже в полном порядке.
А вот с Gmail возникли некоторые сложности. Gmail письма отклоняет.
Насколько я понял, проблема в том, что письмо не соответствует стандарту RFC 5322: "SMTP error: 550-5.7.1 This message is not RFC 5322 compliant. There are multiple To headers."
Следовательно, проблема в том, что несколько заголовоков недопустимо спецификацией.
Проблему понял и осознал, но не понял, как ее исправить. У меня не хватает сообразительности, как сохранить функциональность скрипта и при этом уменьшить число заголовков.