Как я могу правильно оформить 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; переменная

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

5 ответов

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

$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);

Попробуй это. Возьмите тип контента и 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);

Это работает для меня:) для больше увидеть это

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

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

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

Я создал два отдельных сайта: один для себя, другой для клиента?, В обоих случаях я отправлял электронные письма с помощью почтовой программы 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";
}
Другие вопросы по тегам