如何从web表单正确设置PHP邮件文本的样式?

如何从web表单正确设置PHP邮件文本的样式?,php,html,css,email,contact-form,Php,Html,Css,Email,Contact Form,我有这个网页联系我的工作,但当发送电子邮件时,它到达纯文本,但我想在顶部添加一个背景和一个组织的标志和样式的文本,以适应网站的平面设计。我一直很难解决这个问题,所以我在这里作为最后的手段 有人有正确的方法来实现这一点吗 这里是一个截图,我是如何试图完成这一点时,通过电子邮件收到。(组织需要在iPhone或mac电子邮件客户端上的邮箱中查看此信息。) 下面是我目前掌握的基本代码,它可以显示纯文本: <?php $field_name = $_POST['name']; $field

我有这个网页联系我的工作,但当发送电子邮件时,它到达纯文本,但我想在顶部添加一个背景和一个组织的标志和样式的文本,以适应网站的平面设计。我一直很难解决这个问题,所以我在这里作为最后的手段

有人有正确的方法来实现这一点吗

这里是一个截图,我是如何试图完成这一点时,通过电子邮件收到。(组织需要在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";
  }
  ?>

使用像这样的mailer类

试试这个。将内容类型和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);

它对我有用:)有关更多信息,请参见

要从PHP的
邮件
功能发送HTML电子邮件,您需要指定其他标题,即
MIME版本、内容类型和字符集


这里有一个供你遵循的原则。您最好使用前面提到的类,因为它抽象了许多更精细的细节。

我现在创建了两个独立的网站,一个为我自己,一个为客户?。这两次我都使用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";
}
$emailTo=$\u POST['email']//用户电子邮件
$name=$_POST['name']//用户名
$subject=“欢迎新用户访问该网站!”;
$message=”
网站
嘿”$电邮至。“,感谢您访问此网站!
";
$mail=新的PHPMailer;
$mail->Fromsupport@website.com';
$mail->FromName='超级酷网站';
$mail->addAddress($emailTo,$name);
$mail->isHTML(true);
$mail->Subject=$Subject;
$mail->Body=$message;
$mail->AltBody=str_标记($message);
如果($mail->send()){
回显“您的电子邮件已发送!”;
}否则{
回显“您的电子邮件发送失败”;
}

这是我通常使用的格式

$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);
$to='1!'email@email.com';
$subject='newemail!';
$from=“您的网站名称”;
$message='HTML格式的消息在此';
$headers=“From:$From\r\n”;
$headers.=“内容类型:text/html\r\n”;
邮件($to、$subject、$message、$headers);

我会试试看,虽然装上它似乎有点乏味,但我今天早些时候做了一个小测试,但它从来没有发送过测试电子邮件,看看它是否有效发送HTML电子邮件可能真的很痛苦,不同的电子邮件阅读器会给你不同的结果。太棒了,我回到工作场所后会尝试。嘿,这看起来很有希望,我必须测试它们中的每一个,直到我得到一个有效的,您可以在其中添加一些图片到样式?是的,您可以将图片添加到您的邮件中,但请确保通过完整的URL
引用它们http://website.com/images/image.png
而不是通常的
/images/image.png
,因为一旦电子邮件发送给用户,用户客户端上就没有/images/目录。通过阅读示例中的代码,还有一个问题,这更像是从web管理员发送给用户的电子邮件吗?我试图完成的电子邮件类型是,用户进入联系人表单,在其中输入他的姓名、电子邮件和消息,然后发送到管理员的电子邮件,在那里以HTML和一些图像显示。如果您只是希望有一个联系人提交表单,则mail()函数可能不是您想要的。您可以继续使用邮件表单,只需将其设置为
$mailTo=admin@website.com';,或设置将表单保存到SQL表的方法。