PHP Code wird zweimal ausgeführt?

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
Hallo zusammen,

ich suche gerade nach einem Fehler in einem Script.
Das Scriot habe ich auf´s Minimum heruntergebrochen
und erhalte im restlichen Teil den selben Fehler - die
eMails werden doppelt versendet.

Hat jemand eine Idee, wo der Fehler im Code liegen könnte?

PHP:
session_start();
require_once 'src/Entities/Person.php';
require 'classes/phpMailer/PHPMailerAutoload.php';
require_once 're_function.php';
$person = new PERSON();

$cc_emails = "";

$asp_nachname = 'XXX';

$asp_vorname = "YYY";

if (true) {

    $mail = new PHPMailer;

    $mail->CharSet = 'UTF-8';

    /* eMail Explode | $cc_emails */
    $exp_cc = explode(' ', $cc_emails);
    $vjaEmp = getEmail($row['kuerzel']);

    //Set who the message is to be sent from
    $mail->setFrom('rechnung@xyz.de', 'XYZ');

    //Set an alternative reply-to address
    $mail->addReplyTo('rechnung@xyz.de', 'XYZ');

    //Set who the message is to be sent to
    $mail->addAddress("test@beispiel.com", $asp_nachname .', '. $asp_vorname);
    foreach ($exp_cc as $cc) {
        $mail->addCC($cc);
    }
    $mail->addBCC($vjaEmp);
    $mail->addBCC('rechnung@xyz.de', $asp_nachname .', '. $asp_vorname);

    //Set the subject line
    $mail->Subject = "TEST - Rechnung für eine bestimmte Ware!";

    //Read an HTML message body from an external file,
    //convert referenced images to embedded, convert
    //HTML into a basic plain-text alternative body
    ob_start();
    //include('contents.php');
    //$mail->Body = ob_get_contents();
    //$mail->Body = $str_message;
    $mail->Body = "Test-eMail!";
    ob_end_clean();
    //$mail->msgHTML(file_get_contents('contents.html'),
    //dirname(__FILE__));

    //Replace the plain text body with one created manually
    $mail->AltBody = 'This is a plain-text message body';

    mail('david@xyz.de', 'Aufruf II!', 'Aufruf II!'); // Test, ebenfalls doppelt!

    //send the message, check for errors
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        $ts = date("Y-m-d");
        echo "Ihre Daten wurden übermittelt";
        setcookie("stopSendRe", true, time()+5);
    }

}

Die eMail geht doppelt an den Empfänger in addAdress und
'mail('david@xyz.de', 'Aufruf II!', 'Aufruf II!');' wird ebenfalls doppelt
ausgeführt. Der Aufruf erfolgt allerdings nur einmal per Link (URL).

Vielleicht hat einer eine Idee, woran es liegen könnte.

VG
 
ich hab das mit einem ähnlichen Code von mir verglichen und mglw pfuscht dir der output buffer rein?

der scheint mir für die mail funktion nicht nötig:
PHP:
<?php
  require_once 'src/Entities/Person.php';
  require 'classes/phpMailer/PHPMailerAutoload.php';
  require_once 're_function.php';
  $mail = new PHPMailer();
  $eol = "\r\n";
  $mail_body = '';

  //Set who the message is to be sent from
  $mail->setFrom('rechnung@meinedomain.com', 'XYZ');
   
  //Set an alternative reply-to address
  $mail->addReplyTo('rechnung@meinedomain.com', 'XYZ');

  //Set who the message is to be sent to
  $mail->addAddress('test@meinedomain.com', 'Musterfrau, Sabine');

  $mail_body .= 'Testertest das ist.' . $eol;

  ob_start(); // nur für funktionen mit output echo oder print, printf, etc nutzen

  echo 'blah', $eol;
  $mail_body .= ob_get_contents();
  ob_end_clean();

  $mail_body .= 'Zeile 3' . $eol;

  $mail->Body = $mail_body;

  if ( $mail->send() ) {
    $ts = date("Y-m-d");
    echo "Ihre Daten wurden &uuml;bermittelt";
    setcookie("stopSendRe", true, time()+5);
  } else {
    echo "Mailer Error: " . $mail->ErrorInfo;
  }
   
?>
Ergänzung ()

Vielleicht hat es auch mit dem Cookie und "SendRe" zu tun?
Was macht das genau bzw mal ohne Cookie testen.
 
Zuletzt bearbeitet:
Hallo,

werden mit folgenden Skript ebenfalls zwei E-Mails gesendet?

PHP:
<?php
mail('david@xyz.de', 'Test-E-Mail', 'Test der PHP mail() Funktion');
?>

Falls ja, dann schau dir mal die Postfix / Sendmail / SSMTP Konfiguration auf dem Server an und prüfe mal, was ggf. der Smarthost danach noch mit der Mail macht. Dann muss die Duplikation nämlich irgendwo dort stattfinden.
 
  • Gefällt mir
Reaktionen: Pfandfinder und netzgestaltung
Zurück
Oben