Php mail - 包含数组和条件的消息变量[重复]

Posted

技术标签:

【中文标题】Php mail - 包含数组和条件的消息变量[重复]【英文标题】:Php mail - A message variable that contain array and conditions [duplicate] 【发布时间】:2018-08-12 14:39:45 【问题描述】:

我一直在尝试发送一封包含 php 生成的 html 代码的电子邮件。

上下文是,我正在使用 php 生成一个网页,我试图通过复制我用来生成网页的代码并使用邮件功能输入一条消息来通过电子邮件发送这个网页。

我找到了一种生成包含 php 变量的电子邮件的方法,如下例所示:

 [...]   
$message = "<address>
                            <strong>Adresse de livraison:</strong><br>
                             $prenom  $nom<br>
                             $adress1<br>
                             $adress2<br>
                             $postalcode  $ville,  $country
                        </address>";
    mail($destinataire, $objet, $message, $headers);
[...]

一切都很完美,电子邮件发送正确。

但现在我的代码包含如下示例的 php 部分:

 if ($disque!= 'No') 
<tr>
    <td>Disque avant :  $disque</td>
    <td class='text-center'>

        $selected_product[] = $disqueav;
        $data = bdd_select('SELECT Price FROM products WHERE Nom = ?', $selected_product);
        echo $data['0']['Price'] . '€';
        $subtotalprice = $data['0']['Price'] + $subtotalprice;

    </td>
    <td class='text-center'>1</td>
    <td class='text-right'> $data['0']['Price'] . '€';</td>
</tr>

由于像 $data['0'] 这样的数组,它不起作用,即使我对它使用单逗号,对 $message 变量使用双逗号。

我收到此错误:

Parse error: syntax error, unexpected ']', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

我的问题是,有没有办法编写这部分代码,这样我就不会收到任何错误,并且可以完全按照我看到的方式发送页面。

非常感谢。

【问题讨论】:

你不能像那样混合 PHP 和 HTML。您必须在输出 HTML 之前关闭 PHP,然后再次打开 PHP 以使用更多 PHP 代码。 我发现 $message = "Hello $name"?> 是最简单的方法。 【参考方案1】:

尝试使用 $data[0]['price']; 如果仍然抛出错误,请在评论中跟踪 Apache 日志。

【讨论】:

谢谢!它有帮助,但 $selected_product[] = $disqueav 仍然存在问题。此行的错误是 Parse error: syntax error, unexpected ']', Expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) 请注释您定义变量 $disqieav 的那段代码。 这是从 $_post 中提取的变量。但我得到的问题是 $selected_product[] 的编写方式。 提取($_POST); 好的。而不是使用 $selected_product[] = $disqueav;尝试使用 array_push($selected_product,$disqueav);【参考方案2】:

只需创建一个消息变量,将您的消息字符串嵌入到该变量中。 $data['0']; 也有问题。因为 0 是整数索引而不是字符串,所以它应该是 $data[0] 而不是 $data['0']。我认为这对你有用。由于没有数据库,我无法正确测试。

$message = "<table><tbody>";
if ($disque!= 'No') 
    $message.="<tr>
    <td>Disque avant :".  $disque."</td>
    <td class='text-center'>";

    $selected_product[] = $disqueav;
        $data = bdd_select('SELECT Price FROM products WHERE Nom = ?', $selected_product);
        $message .= $data[0]['Price'] . "€";
        $subtotalprice = $data[0]['Price'] + $subtotalprice;
        $message .= $subtotalprice;
    $message .= "</td>
    <td class='text-center'>1</td>";
    $message .= "<td class='text-right'> ".$data[0]['Price'] . "€</td>
</tr>";



$message .="</tbody></table>";

【讨论】:

以上是关于Php mail - 包含数组和条件的消息变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过电子邮件发送带有 PHP 和 HTML 错误消息“Cannot POST mail.php”的表单

laravel 邮件发送消息

输出消息后如何使用标头重定向到php中的另一个页面?

无法在 laravel 5.2 中发送没有发件人地址的消息我已经设置了 .env 和 mail.php

我们可以在 wp_mail() 函数中使用多个消息字段吗?

php 创建包含变量名和它们的值的数组函数