У меня есть сценарий PHP, который отправляет два письма с помощью команды mail. Электронное письмо всегда приходит посетителю сайта - оно всегда приходит правильно. Второе электронное письмо отправляется оператору веб-сайта. Почта всегда приходит, но примерно в 10% случаев она пуста. Таким образом, в нем есть только текст, но переменные, такие как $ _SESSION ['Name' '], которые должны быть вставлены, не будут приняты. Все они пусты. Это происходит только с электронным письмом оператору сайта, первым электронным письмом к клиенту.
Функция "mail_cart"
function mailCart() {
//Versandkosten berechnen
if($_POST['Versandart']==1) { $V_Preis="3.00"; } else { $V_Preis="0.00"; }
global $db;
$cart = $_SESSION['cart'];
if ($cart!="") {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<table border="1" width="460">';
$output[] = '<tr><td class="tdtitle" width="260">Veranstaltung</td><td class="tdtitle_right" width="60">E-Preis</td><td class="tdtitle" width="40">Anzahl</td><td class="tdtitle_right" width="100">Gesamtpreis</td></tr>';
foreach ($contents as $id=>$qty) {
//Kat aufdröseln
list($id, $kat) = explode(":", $id);
$sql = 'SELECT * FROM artikel WHERE id = '.$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td>'.$Titel.' am '.datesplit_Datum($Datum).'</td>';
$output[] = '<td align="right">'.sprintf("%01.2f", $Preise).' €</td>';
$output[] = '<td align="center">'.$qty.'</td>';
$output[] = '<td align="right">'.sprintf("%01.2f", $Preise * $qty).' €</td>';
$total += $Preise * $qty;
$total_versand = $total+$V_Preis;
$total_netto = ($total-$total/1.07)+($V_Preis-$V_Preis/1.07);
}
$output[] = '</tr>';
$output[] = '<tr><td colspan="3">Versandkosten:</td>';
$output[] = '<td align="right">'. sprintf("%01.2f", $V_Preis) .' €</td></tr>';
$output[] = '<tr><td colspan="3">inkl. MwSt. 7%:</td>';
$output[] = '<td align="right">'. sprintf("%01.2f", $total_netto) .' €</td></tr>';
$output[] = '<tr><td colspan="3"><b>Summe:</b></td>';
$output[] = '<td align="right"><b>'. sprintf("%01.2f", $total_versand) .' €</b></td></tr>';
$output[] = '<tr><td align="right" colspan="5">';
$output[] = '</table>';
}
//Neu zur Fehlereingrenzung
else {$output[] = '<p>Fehler bei der Übermittlung der Ticketdaten aus dem Warenkorb</p>';}
return join('',$output);
}
Сам почтовый вызов:
mail($_SESSION['eMail'], "Ihre Ticketbestellung", "$MessAnbieter",
"From: tickets@domain.de\nReply-To: tickets@domain.de\nContent-Type: text/html; Charset=utf-8\nX-Mailer: PHP/" . phpversion());
mail("tickets@domain.de", "Web-Ticket-Bestellung!", "$MessAnbieter",
"From: tickets@domain.de\nReply-To: tickets@domain.de\nContent-Type: text/html; Charset=utf-8\nX-Mailer: PHP/" . phpversion());
Редактировать: есть почтовый шаблон с кодом: echo mailCart();
, и это перед двумя вызовами отправки почты:
ob_start(); include('templates/mail/order_mail.htm');
$MessAnbieter = ob_get_contents();
ob_end_clean();