Как отправить письмо в формате HTML с картинками с помощью PHP?
Я хочу иметь страницу с некоторыми настройками и HTML-выводом, которая отправляется по электронной почте на определенный адрес. Что я должен сделать?
Основная проблема заключается в прикреплении файлов. Как я могу это сделать?
Ответ 1
Это довольно просто: оставьте изображения на сервере и отправьте PHP + CSS ...
$to = 'bob@example.com';
$subject = 'Website Change Reqest';
$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: susan@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$message = '<p><strong>Некоторый текст</strong> для отправки.</p>';
mail($to, $subject, $message, $headers);
Именно эта строка сообщает почтовой программе и получателю, что электронное письмо содержит (надеюсь) правильно сформированный HTML-код, который ему необходимо будет интерпретировать:
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
Ответ 2
Вам нужно закодировать свой html, используя абсолютный путь для изображений. Абсолютный путь означает, что вы должны загрузить изображения на сервер, а в атрибуте src изображений вы должны указать прямой путь, подобный этому: <img src="http://yourdomain.com/images/example.jpg">.
Ниже приведен код PHP:
<?php
$to = 'aidan@example.com' . ', '; // запятая обязательна
$to .= 'wez@example.com';
// субъект
$subject = 'С днем рождения тебя!';
// сообщение
$message = '
<p>Here are the birthdays upcoming in August!</p>
';
// отправка HTML
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
// дополнительные заголовки
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
// вызов почтовой программы
mail($to, $subject, $message, $headers);
?>
Ответ 3
У меня есть этот код, и он отлично подойдет для вашего случая:
public function forgotpassword($pass,$name,$to) {
$body ="<table width=100% border=0><tr><td>";
$body .= "<img width=200 src='";
$body .= $this->imageUrl();
$body .="'></img></td><td style=position:absolute;left:350;top:60;><h2><font color = #346699>PMS Pvt Ltd.</font><h2></td></tr>";
$body .='<tr><td colspan=2><br/><br/><br/><strong>Dear '.$name.',</strong></td></tr>';
$body .= '<tr><td colspan=2><br/><font size=3>В соответствии с Вашим запросом мы высылаем Ваш пароль.</font><br/><br/>Пароль: <b>'.$pass.'</b></td></tr>';
$body .= '<tr><td colspan=2><br/>Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь с нами по адресу:<br/><a href="mailto:support@pms.com" target="_blank">support@pms.com</a></td></tr>';
$body .= '<tr><td colspan=2><br/><br/>С наилучшими пожеланиями,<br>Команда PMS .</td></tr></table>';
$subject = "Забыли пароль";
$this->sendmail($body,$to,$subject);
}
Почтовая функция:
function sendmail($body,$to,$subject) {
//require_once 'init.php';
$from='testing@gmail.com';
$headersfrom='';
$headersfrom .= 'MIME-Version: 1.0' . "\r\n";
$headersfrom .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headersfrom .= 'From: '.$from.' '. "\r\n";
mail($to,$subject,$body,$headersfrom);
}
Функция image url используется, если вы хотите изменить изображение; вы можете изменить его только в одной функции. У меня есть много почтовых функций, например, забыли пароль, создали пользователя, поэтому я использую функцию image url, в которой вы можете напрямую задать путь.
function imageUrl() {
return "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1)."images/capacity.jpg";
}
Ответ 4
Отправка html-письма мало чем отличается от отправки обычных писем с помощью php. Необходимо лишь добавить тип содержимого в параметр header функции php mail(). Вот пример:
<?php
$to = "toEmail@domain.com";
$subject = "HTML письмо";
$message = "
<html>
<head>
<title>HTML письмо</title>
</head>
<body>
<p>Таблица в письме</p>
<table>
<tr>
<th>Имя</th>
<th>Фамилия</th>
</tr>
<tr>
<td>Еще что-то</td>
<td>Какой-то текст</td>
</tr>
</table>
</body>
</html>
";
// Всегда устанавливайте тип содержимого при отправке HTML-почты
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\b";
$headers .= 'From: name' . "\r\n";
mail($to,$subject,$message,$headers);
?>
Ответ 5
Вы можете легко отправить письмо с HTML-содержимым через PHP. Используйте следующий скрипт:
<?php
$to = 'user@example.com';
$subject = "Отправка HTML почты используя PHP";
$htmlContent = '
<html>
<body>
<h1>HTML</h1>
<p>HTML почтовое сообщение через PHP</p>
</body>
</html>';
// Установите заголовок типа содержимого для отправки электронной почты в формате HTML
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// дополнительные заголовки
$headers .= 'From: CodexWorld<info@codexworld.com>' . "\r\n";
$headers .= 'Cc: welcome@example.com' . "\r\n";
$headers .= 'Bcc: welcome2@example.com' . "\r\n";
// отправка почты
if(mail($to,$subject,$htmlContent,$headers)):
$successMsg = 'Email has sent successfully.';
else:
$errorMsg = 'Email sending fail.';
endif;
?>
Web