【问题标题】:PHP for loop not iterating fully inside HTML emailPHP for 循环未在 HTML 电子邮件中完全迭代
【发布时间】:2012-04-16 11:27:52
【问题描述】:

我有一个 PHP 脚本,我通过它发送 HTML 电子邮件。我正在使用“for”循环来收集数据并将其存储在变量中。循环被指示运行 25 次。问题是它只循环了 19 次。我检查了语法中是否有任何未编码的标签或拼写错误,但没有找到。我发布了 for 循环部分,以防你们中的任何人能发现我看不到的东西。这真的很令人沮丧,因为我认为解决方案非常简单,但我无法发现问题。

'mail()' 函数的标题很好。他们在这里以防万一

$headers = "From: $from \r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

这是我的 for 循环:

$abc ="<table width='600'>";
        $abc .= "<tr>
                        <td bgcolor='#d6bf86'><span style='color:#9c2a00'>Number of Products</span></td>
                        <td align='center' bgcolor='#fde4d0'>$pagess</td>
                        <td align='center' bgcolor='#c3deb9'>$pagese</td>
                        <td align='center' bgcolor='#bee7f8'>$pagesu</td>
                    </tr>";


        for($i=1; $i<=25; $i++)
        {
            $abc .="<tr>";
            if($i % 2 == 0)     //  EVEN ROW
            {       
                    $abc .= "<td bgcolor='#d6bf86' width='260'><span style='color:#9c2a00'>".${f.$i}."</span></td>";
            }
            else                //  ODD ROW
            {
                    $abc .= "<td bgcolor='#fffbd0' width='260'><span style='color:#9c2a00'>".${f.$i}."</span></td>";
            }

                    if(isset(${s.$i}))      
                    {
                        $abc .= "<td bgcolor='#fde4d0' align='center'>Yes</td>";
                        ${s.$i} = "Yes";
                    }
                    else
                    {
                        $abc .= "<td bgcolor='#fde4d0' align='center'>No</td>";
                        ${s.$i} = "No";
                    }
                    if(isset(${e.$i}))
                    {
                        $abc .= "<td bgcolor='#c3deb9' align='center'>No</td>";
                        ${e.$i} = "Yes";
                    }
                    else
                    {
                        $abc .= "<td bgcolor='#c3deb9' align='center'>Yes</td>";
                        ${e.$i} = "No";
                    }
                    if(isset(${u.$i}))
                    {
                        $abc .= "<td bgcolor='#bee7f8' align='center'>No</td>";
                        ${u.$i} = "Yes";
                    }
                    else
                    {
                        $abc .= "<td bgcolor='#bee7f8' align='center'>Yes</td>";
                        ${u.$i} = "No";
                    }
            $abc .="</tr>";
        }


        if(isset($_POST['dscs']))   //  DISCOUNT HAS BEEN APPLIED
        {

            $abc .= "<tr>
                            <td>Base Price</td>
                            <td align='center'>$sums</td>
                            <td align='center'>$sume</td>
                            <td align='center'>$sumu</td>
                        </tr>";
            $abc .= "<tr>
                            <td>Discount Offered</td>
                            <td align='center'>$discount% </td>
                            <td align='center'>$discount% </td>
                            <td align='center'>$discount% </td>
                        </tr>";
            $abc .= "<tr>
                            <td>Effective Price</td>
                            <td align='center'>$dscs</td>
                            <td align='center'>$dsce</td>
                            <td align='center'>$dscu</td>
                      </tr>";
        }
        else
        {
            $dscs = $sums;
            $dsce = $sume;
            $dscu = $sumu;
            $abc .= "<tr>
                            <td>Total Price</td>
                            <td align='center'>$sums</td>
                            <td align='center'>$sume</td>
                            <td align='center'>$sumu</td>
                        </tr>";
        }

        $abc .="</table>";

我可以附上正在发送的电子邮件的屏幕截图,以了解代码是如何被破坏的。如果你也想要截图,请告诉我。

PS:我将此代码复制粘贴到一个单独的文件中并运行它,它工作正常。循环迭代了 25 次。这让我相信将其放入 HTML 电子邮件中存在问题。

如果有帮助,还可以添加电子邮件脚本:

$to = $clem;
$subject = "Something goes here";
$message = "<html>
<head></head>
<body style='background-color:#ffffff; font-family:Lucida Sans Unicode, Lucida Grande, sans-serif;'>
    <table width='600'>
        <tr>
            <td>$abc</td>
        </tr>
    </table>
</body>
</html>";

$from = "$logged_user";
$headers = "From: $from \r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$res=mail($to,$subject,$message,$headers);

提前致谢, 尼萨尔

【问题讨论】:

  • 在 $abc 之后的 for 循环中 .=""; echo $i .. 这样您就可以准确了解循环完全执行时 $i 的值是多少。
  • 好吧杀手。我现在就做,一会就告诉你。编辑:它显示 19。所以循环正在中断。
  • i 的值是多少 .. 是从 1-19 连续还是其他什么?
  • 好吧,我在我的系统中运行你的代码。循环连续运行 25 次。
  • 这也是我得到的。当我在提交表单时回显 $abc 时,我在 php 页面上看到了所有 25 行。但同样的 $abc 在电子邮件中只显示 19 行。这让我相信电子邮件脚本中有些东西搞砸了,因为 $abc 工作正常。

标签: php html for-loop


【解决方案1】:

没关系,我发现了问题所在。这是为有类似问题的人准备的。

I learnt that html emails have a 990 character limit per line. That was the reason why my code was breaking

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签