我有一个功能,可以根据在电子商务中购买的产品数量发送多封电子邮件。在我为函数的php-mail()部分添加标题之前,它工作得很好。正如你在下面看到的,我的标题是:
$headers .= 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$headers .= "From: info@email.com 'r'n" .
"Reply-To: info@email.com 'r'n" .
"X-Mailer: PHP/" . phpversion();
但是当我声明邮件头(我需要它来将电子邮件发送为html)时,只有第一封电子邮件会被发送出去。我可以不多次发送标题吗?如有任何建议,我们将不胜感激!
函数片段:
foreach ($dstToProduct as $dsid => $productIndices) {
$email = $newDropships[$dsid]['email'];
$subject = "A new order has been placed";
$headers .= 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$headers .= "From: info@email.com 'r'n" .
"Reply-To: info@email.com 'r'n" .
"X-Mailer: PHP/" . phpversion();
// Build message text
$date = date('m/d/Y');
$text = '<table cellpadding="3" style="margin-top: 20px;"><tr style="background-color: #6d7d59; color: #ffffff; font-weight: bold; font-size: 12px;"><td style="width: 240px; vertical-align:text-top;">Product Name</td><td style="width: 120px; vertical-align:text-top;">Model Number</td><td style="width: 80px; vertical-align:text-top;">Quantity</td><td style="width: 80px; vertical-align:text-top;">Price</td></tr>';
foreach ($productIndices as $productIndex) {
$text .= '<tr style="background-color: #f0f0f0; color: #513311; font-size: 12px;"><td style="vertical-align:text-top;">' . $products_array[$productIndex]["text"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["model"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["qty"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["price"] . '</td></tr>';
}
$text .= '</table>';
if (!mail($email, $subject, $text, $headers)) {
mail('info@email.com', 'Error sending product', 'The following order was not sent: ' . $order_id);
}
}
}
试试这个:
$subject = "A new order has been placed";
$headers = 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$headers .= 'From: Info <info@email.com>' . "'r'n";
$headers .= 'Reply-To: Info <info@email.com>' . "'r'n";
$headers .= "X-Mailer: PHP/".phpversion();
$date = date('m/d/Y');
foreach ($dstToProduct as $dsid => $productIndices)
{
$email = $newDropships[$dsid]['email'];
$text = '<table cellpadding="3" style="margin-top: 20px;"><tr style="background-color: #6d7d59; color: #ffffff; font-weight: bold; font-size: 12px;"><td style="width: 240px; vertical-align:text-top;">Product Name</td><td style="width: 120px; vertical-align:text-top;">Model Number</td><td style="width: 80px; vertical-align:text-top;">Quantity</td><td style="width: 80px; vertical-align:text-top;">Price</td></tr>';
foreach ($productIndices as $productIndex) {
$text .= '<tr style="background-color: #f0f0f0; color: #513311; font-size: 12px;"><td style="vertical-align:text-top;">' . $products_array[$productIndex]["text"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["model"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["qty"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["price"] . '</td></tr>';
}
$text .= '</table>';
if (!mail($email, $subject, $text, $headers)) {
mail('info@email.com', 'Error sending product', 'The following order was not sent: ' . $order_id);
}
}
如果你认为php版本()会引起问题,请尝试以下操作:
$phpV = phpversion();
$subject = "A new order has been placed";
$headers .= 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$headers .= "From: info@email.com 'r'n" .
"Reply-To: info@email.com 'r'n" .
"X-Mailer: PHP/" .$phpV;
一般来说,你不需要每次都这样做,不是特定用户的变量取决于——你可以声明一次。像这样的东西:
$subject = "A new order has been placed";
$headers .= 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$headers .= "From: info@email.com 'r'n" .
"Reply-To: info@email.com 'r'n" .
"X-Mailer: PHP/" . phpversion();
$date = date('m/d/Y');
$text = '<table cellpadding="3" style="margin-top: 20px;"><tr style="background-color: #6d7d59; color: #ffffff; font-weight: bold; font-size: 12px;"><td style="width: 240px; vertical-align:text-top;">Product Name</td><td style="width: 120px; vertical-align:text-top;">Model Number</td><td style="width: 80px; vertical-align:text-top;">Quantity</td><td style="width: 80px; vertical-align:text-top;">Price</td></tr>';
foreach ($productIndices as $productIndex) {
$text .= '<tr style="background-color: #f0f0f0; color: #513311; font-size: 12px;"><td style="vertical-align:text-top;">'
. $products_array[$productIndex]["text"] . '</td><td style="vertical-align:text-top;">'
. $products_array[$productIndex]["model"] . '</td><td style="vertical-align:text-top;">'
. $products_array[$productIndex]["qty"] . '</td><td style="vertical-align:text-top;">'
. $products_array[$productIndex]["price"] . '</td></tr>';
}
$text .= '</table>';
foreach ($dstToProduct as $dsid => $productIndices) {
$email = $newDropships[$dsid]['email'];
if (!mail($email, $subject, $text, $headers)) {
mail('info@email.com', 'Error sending product', 'The following order was not sent: ' . $order_id);
}
您可以这样尝试
希望它对你有用。。。
<?php
$headers=array(
'MIME-Version: 1.0' . "'r'n",
'From: info@email.com',
'Content-Type:text/html',
'Reply-To: info@email.com'
);
$subject = "A new order has been placed";
foreach ($dstToProduct as $dsid => $productIndices) {
$email = $newDropships[$dsid]['email'];
// Build message text
$date = date('m/d/Y');
$text = '<table cellpadding="3" style="margin-top: 20px;"><tr style="background-color: #6d7d59; color: #ffffff; font-weight: bold; font-size: 12px;"><td style="width: 240px; vertical-align:text-top;">Product Name</td><td style="width: 120px; vertical-align:text-top;">Model Number</td><td style="width: 80px; vertical-align:text-top;">Quantity</td><td style="width: 80px; vertical-align:text-top;">Price</td></tr>';
foreach ($productIndices as $productIndex) {
$text .= '<tr style="background-color: #f0f0f0; color: #513311; font-size: 12px;"><td style="vertical-align:text-top;">' . $products_array[$productIndex]["text"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["model"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["qty"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["price"] . '</td></tr>';
}
$text .= '</table>';
$body = $text;
if (!mail($email,$subject,$body,implode("'r'n",$headers))) {
mail('info@email.com', 'Error sending product', 'The following order was not sent: ' . $order_id);
}
}
您的$headers正在与循环合并,请尝试此操作。我相信它会起作用:
foreach ($dstToProduct as $dsid => $productIndices) {
$email = $newDropships[$dsid]['email'];
$subject = "A new order has been placed";
$headers = "";
$headers .= 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$headers .= "From: info@email.com 'r'n" .
"Reply-To: info@email.com 'r'n" .
"X-Mailer: PHP/" . phpversion();
// Build message text
$date = date('m/d/Y');
$text = '<table cellpadding="3" style="margin-top: 20px;"><tr style="background-color: #6d7d59; color: #ffffff; font-weight: bold; font-size: 12px;"><td style="width: 240px; vertical-align:text-top;">Product Name</td><td style="width: 120px; vertical-align:text-top;">Model Number</td><td style="width: 80px; vertical-align:text-top;">Quantity</td><td style="width: 80px; vertical-align:text-top;">Price</td></tr>';
foreach ($productIndices as $productIndex) {
$text .= '<tr style="background-color: #f0f0f0; color: #513311; font-size: 12px;"><td style="vertical-align:text-top;">' . $products_array[$productIndex]["text"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["model"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["qty"] . '</td><td style="vertical-align:text-top;">' . $products_array[$productIndex]["price"] . '</td></tr>';
}
$text .= '</table>';
if (!mail($email, $subject, $text, $headers)) {
mail('info@email.com', 'Error sending product', 'The following order was not sent: ' . $order_id);
}
}
}