Как я могу правильно стилизовать PHP текст по почте из веб-формы?

У меня есть страница с веб-контактом, над которой я работаю, но при отправке электронных писем она приходит в виде обычного текста, но я хотел бы добавить фон и логотип организации сверху и оформить текст так, чтобы он соответствовал плоскому дизайну веб-сайта. У меня были проблемы с обойти это, поэтому я здесь в крайнем случае.

У кого-нибудь есть правильный способ сделать это?

Вот скриншот того, как я пытаюсь сделать это, когда получил через электронную почту. (Организация должна видеть это в своем почтовом ящике на почтовом клиенте iPhone или Mac.)
введите описание изображения здесь

Вот основной код, который у меня есть на данный момент, который выдает простой текст:

<?php$field_name = $_POST['name'];
$field_email = $_POST['email'];
$field_message = $_POST['message'];

header("Location: contact-thanks.php"); ## important redirect page$mail_to = 'DESIGNATED_EMAIL'; ## Organization's receiving email
$subject = 'Message from an a Visitor '.$field_name;

$body_message = '<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body style="margin:0px; padding:0px; background:#f7f7f7;">
<div style="display:block; margin:auto; width:750px;background:#2C3E50; border-bottom: solid 2px #2C3E50;">
<div style="display:block; width:750px; margin:auto;">
<span style="color:#fff;padding:5px 10px;display:block;font-size:22px;">From: Johny,</span>
</div>

</div>
<div style="width:750px; margin: auto; background:#fff; min-height: 100px;">
<div style="text-align: left;display: block;width: 500px;padding: 50px; padding-bottom:30px;font-size: 14px;color: #666; margin:auto;">
<div style="color:inherit;display:block;width:100%;margin:10px 0;line-height:24px;font-size:18px;color:#333">Hi,</div>
<div style="color:inherit;display:block;width:100%;margin:10px 0;line-height:24px">Thank you for visiting us..<span style="color:#111;font-weight:600;display:block;">This is an example that how we formatted our email in php.</span>
</div>
</div>
<div style="border-top:solid 1px #ddd; text-align:left;font-size:14px;color:#888;padding-top:5px;padding-bottom:2px;padding-left:10px;">&copy; exampleOrganization.org</div>
</div>
</body>
</html>';

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status)
{
echo "Message was sent";
}
else {
echo "ERROR";
}
?>

$body_message; переменная в основном содержит весь скриншот, и я подумал, будет ли это работать, но я не знаю, как сделать три переменные $field_name;, $field_email а также $field_message напишите содержание на $body_message; переменная

Кто-нибудь может пролить мне свет на выполнение этой последней задачи?

0

Решение

Используйте такой почтовый класс, как этот https://github.com/PHPMailer/PHPMailer

0

Другие решения

Попробуй это. Возьмите тип контента и MIME-версию для $headers:

 $headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

mail($mail_to, $subject, $body_message, $headers);

У меня это работает 🙂 этот

0

Чтобы отправить HTML письмо от PHP mail В функции нужно указать дополнительные заголовки, а именно MIME-Version, Content-Type and charset,

Вот твердый пример для вас, чтобы следовать. Вы могли бы быть лучше, используя PHPMailer Класс, как упоминалось ранее, так как он абстрагирует большую часть мелких деталей.

0

Я создал два отдельных сайта: один для себя, а другой для клиент?. Оба раза я отправлял электронные письма, используя PHP почтовик, так как это намного проще в использовании, чем встроенная почта в PHP.

Это действительно легко настроить:

$emailTo = $_POST['email']; //Users Email
$name = $_POST['name']; //Users name
$subject = "Welcome to the site new user!";
$message = "<html>
<head>
<title>Website.com</title>
<head>
<body>
<p>Hey " . $emailTo . ", thank you for visiting this site!
</body>
</html>
";

$mail = new PHPMailer;
$mail->From = 'support@website.com';
$mail->FromName = 'Super Cool Website';
$mail->addAddress($emailTo,$name);
$mail->isHTML(true);

$mail->Subject = $subject;
$mail->Body = $message;
$mail->AltBody = str_tags($message);

if ( $mail->send() ) {
echo "Your email was sent!";
} else {
echo "Your email failed to send";
}
0

Это формат, который я обычно использую

$to = 'email@email.com';
$subject = 'New email!';
$from = "Your Website Name";
$message = '<html><h1>HTML formatted message in here</h1> </html>';

$headers = "From: $from\r\n";
$headers .= "Content-type: text/html\r\n";

mail($to,$subject,$message,$headers);
0