我需要帮助,我需要通过php邮件功能邮件所以在消息字段中我应该制作一个HTML文本,但在本文中我有循环来计算一个数组来回显表的数据,但出了点问题,有谁知道为什么它没有工作???
public function sendmail($arr){
$to = $_SESSION['email'];
$subject = 'کارت شارژ';
$message = '<html>
<head>
<title>کد شارژ خریداری شده شما</title>
</head>
<body>
<p>از خرید شما متشکریم</p>
<table>
<tr>
<th>#شماره</th><th>کد شارژ</th>
</tr>
'+
foreach ($arr as $i){
echo '<tr><td>'.$i.'</td></tr>';
}
+'
</table>
</body>
</html>';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'To: '.$_SESSION['phone'].' <'.$to.'>' . "\r\n";
$headers .= 'From: hameja123 <hameja123@hameja123.ir>' . "\r\n";
mail($to, $subject, $message, $headers);
}
答案 0 :(得分:2)
您不能将代码拼接成类似的字符串。此外,+
用于添加,而不是连接。
尝试预先计算行:
$rows = "";
foreach($arr as $i) $rows .= "<tr><td>".$i."</td></tr>";
然后你可以将它连接起来:
"...... ".$rows." .......";
答案 1 :(得分:0)
将部分代码更改为:
$data = '';
foreach ($arr as $i){
$data .= '<tr><td>'.$i.'</td></tr>';
}
$message = '<html>
<head>
<title>کد شارژ خریداری شده شما</title>
</head>
<body>
<p>از خرید شما متشکریم</p>
<table>
<tr>
<th>#شماره</th><th>کد شارژ</th>
</tr>
'.$data.'
</table>
</body>
</html>';
您无法使用字符串插入foreach内联。
答案 2 :(得分:0)
不要使用
foreach ($arr as $i){
echo '<tr><td>'.$i.'</td></tr>';
}
在“$ message =”声明中。
相反,请在$message = '<html>
$string='';
foreach($arr as $i)
$string = $string.'<tr><td>$i</td><tr>';
现在,在$ message =,
中这样做:
<tr>
<th>#شماره</th><th>کد شارژ</th>
</tr>
$string
</table>