Я отправляю почту с mail()
функция php. Я встраиваю изображение с использованием base64-кодировки в HTML-код, но, например, в Gmail оно не отображается.
Я прочитал, что лучший способ сделать это — использовать cid
в HTML-код и прикрепление изображения, но я нахожу только коды, использующие phpmailer, которых я хотел бы избежать, но вопрос в том, возможно ли с php mail
функция или есть несколько простых классов, чтобы упростить процесс?
$message = $html_mail;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'To: '. $to . "\r\n";
$headers .= 'From: My website <'.$admin_mail.'>' . "\r\n";
$response = mail($to, $subject, $message, $headers);
Вместо использования base64_encode image вы должны использовать html image tag с src path вашего сервера, чтобы он загружался с вашего сервера.
<img src="http://www.yourserver.com/myimages/image1.jpg">
Поскольку ваша почта имеет заголовок text / html, изображение будет автоматически проанализировано через почтовый клиент.
Если вы посмотрите на «Первоисточник» в Gmail, вы можете обнаружить, что gmail редактирует HTML, чтобы удалить изображение. ИДК, если он делает это или нет, хотя. Я бы попытался скопировать HTML из электронной почты в Gmail и поместить его в HTML-файл и посмотреть, правильно ли он загружается в браузере. Тогда вы наверняка узнаете, испортил ли это Gmail или это ошибка в другом месте.
К вашему сведению, отправка html-писем, которые работают во всех почтовых клиентах, может быть огромной болью. Лучший гид, которого я знаю, это — https://www.sitepoint.com/how-to-code-html-email-newsletters/ . SitePoint также продает книгу об этом, которая является золотым стандартом IMO.
Удачи!