E-Mail Versand

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • E-Mail Versand

    Ich habe folgendes Script:

    Quellcode

    1. // Daten per E-Mail verschicken ********************************************************************************************
    2. $Empfaenger = "edi2@***.de";
    3. $Betreff = "EDI Konverter #999";
    4. $DateinameMail = $parts[$i]->parameters[0]->value;
    5. $h = fopen($conf['path'].$fileend, 'rb');
    6. $filecontents = fread($h, filesize($conf['path'].$fileend));
    7. $Trenner = md5(uniqid(time()));
    8. $Header = "From: edi@***.de\n";
    9. $Header .= "MIME-Version: 1.0\n";
    10. $Header .= "Content-Type: multipart/mixed; boundary=$Trenner\n";
    11. $text = "--$Trenner\n";
    12. $text .= "Content-Type: text/plain; name=$DateinameMail\n";
    13. $text .= "Content-Transfer-Encoding: base64\n";
    14. $text .= "Content-Disposition: attachment; ".
    15. "filename=$DateinameMail\n\n";
    16. $text .= chunk_split(base64_encode($filecontents));
    17. $text .= "\n";
    18. $text .= "--$Trenner--";
    19. $versand = mail($Empfaenger, $Betreff, $text, $Header);
    20. if ($versand) {
    21. echo '5) <font color="green">Versand erfolgreich!</font>';
    22. } else {
    23. echo '5) <font color="red">Versand gescheitert!</font>';
    24. }
    Alles anzeigen


    Ich habe es aus dem Netz und habe es für mich abgeändert. Bisher funktionierte damit immer der Versand der E-Mails mit Dateianhängen problemlos über Xampp. Nur seit dem neusten Update kommen die Mails entweder gar nicht an oder extrem verspätet, obwohl das Script "Versand erfolgreich!" sagt. Ich frage mich, ob das Script überhaupt so richtig ist.

    Wäre echt nett, wenn Ihr mir da helfen könntet.
  • So ich habe es geschafft auf PHPMAILER umzustellen.

    Vielleicht braucht es ja jemand. Das ist das neue Script:

    Quellcode

    1. $DateinameMail = $parts[$i]->parameters[0]->value;
    2. $DateinameMail = "eingang/".$DateinameMail;
    3. $pfad = ini_get("include_path");
    4. $pfad .= ";./phpmailer";
    5. ini_set("include_path", $pfad);
    6. require_once("../phpmailer/class.phpmailer.php");
    7. $mail = new PHPMailer();
    8. $mail->SetLanguage("de", "./phpmailer/");
    9. $mail->IsSMTP();
    10. $mail->Host = "smtp.1und1.de";
    11. $mail->SMTPAuth = true;
    12. $mail->Username = "edi@[b]***[/b].de";
    13. $mail->Password = "[b]***[/b]";
    14. $mail->From = "edi@[b]***[/b].de";
    15. $mail->FromName = "[b]***[/b]";
    16. $mail->AddAddress("edi2@[b]***[/b].de");
    17. $mail->AddAttachment($DateinameMail);
    18. $mail->Subject = "EDI Konverter #999";
    19. $mail->IsHTML(true);
    20. $mail->Body = "EDI Konverter #999";
    21. $mail->AltBody = "EDI Konverter #999";
    22. if( ! $mail->Send())
    23. {
    24. echo '5) <font color="red">Versand gescheitert!</font>';
    25. echo "Mailer Error: " . $mail->ErrorInfo;
    26. }
    27. else
    28. {
    29. echo '5) <font color="green">Versand erfolgreich!</font>';
    30. }
    Alles anzeigen

    Die ersten beiden Zeilen betreffen nur meinen Dateianhang.

    Nun zu meinem problem:
    Im Grunde läuft alles. Da dieses Script in einer Schleife läuft und jede Datei einzeln verschickt wird, kommt es manchmal zu Fehlern:

    Quellcode

    1. Warning: mail(): Failed to connect to mailserver at "localhost"
    2. port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use
    3. ini_set() in *** on line 292


    Leider verstehe ich nicht warum der Fehler kommt, denn das Script läuft ja und auch Mails nach dieser Fehlermeldung werden noch abgeschickt. Entweder kommt PHPMailer mit dem schneller versenden von mehreren Mails (3 Stück) hintereinander nicht klar oder es ist was anderes.
    Ansonsten würde ich es notfalls so machen, dass ich das Scripts bei Fehlern eben nochmal durchlaufen lasse. Dazu würde ich es einfach in den ELSE teil rein kopieren. So würde es eben bei einem Fehler erneut ausgeführt werden.