【问题标题】:How to style a php email form body?如何设置 php 电子邮件表单正文的样式?
【发布时间】:2014-10-26 09:36:07
【问题描述】:

我正在尝试创建一个 php 表单。当我通过电子邮件收到提交的表单时,我应该会看到它看起来不错。

如果输入以下代码,我会得到这个![电子邮件正文][1]

$mailBody=" <html>
                <body>
                    <table border=\"1\" style=\"width:100%\">
                        Name: $name_title $sender\n
                        Email: $senderEmail\n\n
                        $message
                    </table>        
                </body>
            </html>";

当我得到我的 php 表单时,我怎样才能得到一个漂亮的 scc 表或 div 像一个 html 文档?

【问题讨论】:

  • 您无需在消息正文中添加 或 标记,只需使用内联 css 编写普通 html 代码即可。
  • 你可以添加内联css
  • 请记住,不是每个人都会看到 HTML 布局。人们可以决定对所有邮件使用纯文本。
  • 不加css可以发邮件吗?
  • 是的.. 实际上这是我的电子邮件。我想以漂亮的方式获取表单的详细信息。所以可以清楚地阅读它并根据我收到的HTML邮件安排事情。如果只添加 CSS,那么我怎么能在 2 行中添加它。 eg:我需要在左侧获取名称标签,并在右侧输入。

标签: php html css email


【解决方案1】:
<?php

$to  = "some@example.comsome1@exmple.com,some3@example.com";
$subject = 'Hello World';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// More headers
$headers .= 'From: <me@some.com>' . "\r\n";

$msg =   '<html>';
$msg .= '<head>
   <h2 style="font-family:verdana;text-align:center;background-color:red">Hello World</h2>
   </head>
  <table border="3" cellspacing="2">
  <tr style="font-family:verdana;background-color:#6d6d6d">
       <th>col1</th>
       <th>col2</th>
       <th>Col3</th>
       <th>Col4</th>
   </tr>';
//do something here fetch or send static body

$msg .= "<tr>";
$msg .="<td>" . fetch from db/or static body. "</td>";
$msg .= "<td>" .fetch/ static. "</td>";
$msg .= "<td>" .fetch/static  . "</td>";
$msg .= "</tr>";

$msg .= '</table>';      
$msg .= '</html>'; 

mail($to, $subject, $msg, $headers); 
?>

【讨论】:

  • 请至少将标题添加到 mail() 函数。所有那些$msg .= 看起来真的很丑……但会起作用。
  • 谢谢你,但它说语法错误。意外的 T 变量。你能检查我编辑的答案吗? @黑色
  • 我找到了。我错过了一些分号;我的结果如何tinypic.com/r/6nqqo3/8
  • 抱歉 4 迟到的回复@RiffazStarr 我已经编辑了我的答案。试试看!欢呼
  • 谢谢。但是,如果我从$mail_sent = mail($recipient, $subject, $mailBody, "From: $sender &lt;$senderEmail&gt;", $headers); 中删除$headers,那么它会将邮件作为HTML 代码发送到电子邮件,就像以前一样。不是很好的视觉外观。如果使用$mail_sent = mail($recipient, $subject, $mailBody, "From: $sender &lt;$senderEmail&gt;", $headers);,则不会发送邮件。
【解决方案2】:

请试试这个

<?php

    if($_POST["submit"]) {
    $recipient="am.riparz@gmail.com";
    $subject="Arugambay Bookings : New reservations request";
    $sender=$_POST["sendername"];
    $senderEmail=$_POST["senderEmail"];
    $message=$_POST["message"];
    $name_title=$_POST["name_title"];   

    $mailBody = "<table style='width:100%' cellpadding='5'>";
    $mailBody .= "<tr>";
    $mailBody .= "<th>Item</th>";
    $mailBody .= "<th>Description</th>";
    $mailBody .= "</tr>";
    $mailBody .= "<tr>";
    $mailBody .= "<td>Name</td>";
    $mailBody .= "<td>$name_title $sender</td>";
    $mailBody .= "</tr>";
    $mailBody .= "<tr>";
    $mailBody .= "<td>Email</td>";
    $mailBody .= "<td>$senderEmail</td>";
    $mailBody .= "</tr>";
    $mailBody .= "<tr>";
    $mailBody .= "<td>Special req</td>";
    $mailBody .= "<td>$message</td>";
    $mailBody .= "</tr>";
    $mailBody .= "</table>";

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $mail_sent = mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>");
    }

    if ($mail_sent) {
?>


    <p>Mail sent</p>
 <?php } ?

>

【讨论】:

  • 我得到 解析错误:语法错误,意外的 T_VARIABLE in
  • 我找到了原因。这是因为正上方的。它没有关闭。任何如何将 $headers 放在哪里?现在只是一个变量。不在任何地方打印
  • 好的 更新你的答案。谢谢。
  • 现在问题是添加 MIME VERSION 标头。如果我使用$mail_sent = mail($recipient, $subject, $mailBody, "From: $sender &lt;$senderEmail&gt;"); 那就没问题了。它将邮件发送到电子邮件。如果我使用$mail_sent = mail($recipient, $subject, $mailBody, "From: $sender &lt;$senderEmail&gt;", $headers);,那么它不会发送邮件。可能是因为我在 wordpress 网站侧栏上使用它。编辑我的问题的人删除了 wordpress 这个词。有什么建议吗?
  • Hello Riffaz 您发送邮件的方式是正确的。但我的建议是使用 SMTP 身份验证而不是这个。因为如果您通过 php 邮件功能发送邮件,这将在垃圾邮件中收到。我给你发了链接。将来可能会对您有所帮助。 asif18.com/7/php/…
【解决方案3】:

在设置电子邮件表单的输出样式时,您不需要使用 &lt;html&gt;&lt;body&gt;

您只需要从表格元素开始,并使用一些内联样式。下面的代码将提供一个简单的表格,名称和电子邮件标签以粗体显示,每个单元格周围都有一个小填充。

$mailBody = "<table style='width:100%' cellpadding='5'>
                 <tr>
                     <td style='font-weight:bold;'>Name:</td><td>$name_title $sender</td>
                 </tr>
                 <tr>
                     <td style='font-weight:bold;'>Email:</td><td>$senderEmail</td>
                <tr>
                     <td colspan=2>$message</td>
                </tr>
            </table>";

您还需要确保为邮件标题设置了正确的 MIME 设置,否则将不会显示 HTML 格式,而只会输出。

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

【讨论】:

  • 抱歉,我不明白这有什么问题。它正在解决OP的要求。没有什么太复杂的,并且会按照他或她想要的方式工作。因此,如果您认为我的回答有严重问题,您介意让我知道吗?
  • 您的回答是一个提示,并不是一个很好的提示。您没有解决 Riffaz Starr 没有使用正确的 mime 封装或标题这一事实,这就是他在电子邮件中看到原始 HTML 的原因。我非常感谢您的意见,但您提出了这个问题,我回答了,仅此而已。
猜你喜欢
  • 2012-04-10
  • 2013-10-02
  • 2021-11-17
  • 2012-01-12
  • 2012-03-04
  • 2016-04-25
  • 1970-01-01
  • 2012-02-21
  • 2011-05-22
相关资源
最近更新 更多