HTML电子邮件中的PHP代码

时间:2015-10-25 01:04:10

标签: php html email

我有一个由单独的php文件处理的html表单。在php文件中,有一个部分,其中html确认电子邮件被发送给填写表单的人。我不会发布整个确认电子邮件部分,但这里是标题和消息的开头:

$pfw_subject = 'Confirmation of Registration for 28th Annual Insolvency Conference';
$pfw_email_to = "$Email,$AssistantEmail";
$pfw_header = "From: cbfadmin@jbsmgmt.com\n"
. "Bcc: cdrossen@cdrmarketing.com\n"
. "Reply-To: cbfadmin@jbsmgmt.com\n"
. "MIME-Version: 1.0\n"
. "Content-Type: text/html; charset=ISO-8859-1\n";
$pfw_message = "<html>
<head></head>
<body>.....continues

这是我很难用的表格行的代码。有3种注册类型(发布的变量是$ RegType,选择是Reg1,Reg2和Reg3)有3种不同的价格(发布的变量是 - $ Total_Reg1,$ Total_Reg2,$ Total_Reg3。在电子邮件中我希望它读取这样的东西:

注册类型:$ RegType - $ Total_Reg1显示注册类型和价格

所以我需要知道该人选择哪种注册类型才能获得正确的$ Total。这是我试图做的,但它不起作用:

    <tr>
      <td width='35%' height='18'>Registration Type:</td>
      <td width='65%' height='18'>"
      if($RegType == "Reg1"){"
      $RegType - $Total_Reg1"
      else if ($RegType == "Reg2"){"
      $RegType - $Total_Reg2"
      else if ($RegType == "Reg3"){"
      $RegType - $Total_Reg3"
      }"
      </td>
    </tr>

    ....html continues, then finally:

   </body>
   </html>";

正在发生的事情是电子邮件打印出来但在注册类型停止:并且不提供值并且还中止电子邮件的其余部分。可能是某种语法错误,我确信有更好的方法可以做到这一点,所以任何帮助都将非常感激。提前致谢。

2 个答案:

答案 0 :(得分:1)

你是绝对正确的,这里肯定会出现一些语法问题。您在字符串中定义了HTML,但是您不能在其中间放置if语句。您必须正确格式化PHP;你需要终止字符串并添加到它上面。另外,你在if语句中错过了结束括号(我实际上只删除了它们,因为它们是1-liners)。

这通常不是编写HTML的好方法,因为它使得阅读非常困难。无论...

$pfw_message = "<html><head></head><body><table><tr><td width='35%' height='18'>Registration Type:</td><td width='65%' height='18'>";
if ( $RegType == "Reg1" )
  $pfw_message .= $RegType . ' - ' . $Total_Reg1;
else if ( $RegType == "Reg2" )
  $pfw_message .= $RegType . ' - ' . $Total_Reg2;
else if ( $RegType == "Reg3" )
  $pfw_message .= $RegType . ' - ' . $Total_Reg3;
$pfw_message .= "</td></tr></table></body></html>";

更好的方法,如果做这样的事情,则涉及使用输出缓冲。您将返回将HTML编写为HTML,并在需要时注入PHP。

<?php

// stuff

ob_start(); ?>

<html>
  <head></head>
  <body>
    <table>
      <tr>
        <td width='35%' height='18'>Registration Type:</td>
        <td width='65%' height='18'>
          <?php
          if ( $RegType == "Reg1" )
            echo $RegType . ' - ' . $Total_Reg1;
          else if ( $RegType == "Reg2" )
            echo $RegType . ' - ' . $Total_Reg2;
          else if ( $RegType == "Reg3" )
            echo $RegType . ' - ' . $Total_Reg3;
          ?>
        </td>
      </tr>
    </table>
  </body>
</html>

<?php 
$pfw_message = ob_get_clean();
// more stuff

答案 1 :(得分:0)

试试这个

$pfw_message = ' <html>
<head></head>
<body>
<tr>
  <td width=\'35%\' height=\'18\'>Registration Type:</td>
  <td width=\'65%\' height=\'18\'>"
  if($RegType == "Reg1"){"
  $RegType - $Total_Reg1"
  else if ($RegType == "Reg2"){"
  $RegType - $Total_Reg2"
  else if ($RegType == "Reg3"){"
  $RegType - $Total_Reg3"
  }"
  </td>
</tr>
</body>
</html>';