Второе письмо часто отправляется пустым - PullRequest
0 голосов
/ 26 мая 2020

У меня есть сценарий 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).' &euro;</td>';
            $output[] = '<td align="center">'.$qty.'</td>';
            $output[] = '<td align="right">'.sprintf("%01.2f", $Preise * $qty).' &euro;</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) .' &euro;</td></tr>';
            $output[] = '<tr><td colspan="3">inkl. MwSt. 7%:</td>';
            $output[] = '<td align="right">'.  sprintf("%01.2f", $total_netto) .' &euro;</td></tr>';
            $output[] = '<tr><td colspan="3"><b>Summe:</b></td>';
            $output[] = '<td align="right"><b>'.  sprintf("%01.2f", $total_versand)  .' &euro;</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();
...