PHPMailer - E-Mailversand funktioniert nicht?

  • Hmm, kann ich dir nicht sagen. Schreibe die Zeile noch mal komplett neu, vielleicht ist da noch ein beknacktes Steuerzeichen drin. Ich hab's bei mir auf jeden Fall nicht drin.

  • Habe die Zeile komplett neu geschrieben und nochmal alles
    durchgeguckt aber da lässt sich nichts finden.

    Hier der komplette Code der mailsend.php vielleicht kennt ja noch
    irgendwer die Ursache des Problems:

  • Also, ich muss da passen, ich kenne das Problem nicht und kann auch an deinem Quellcode nichts erkennen. Warum du allerdings überhaupt UTF-8 benutzt, verstehe ich schon nicht.

    Was aber unschön ist:
    $betreff = $_POST['betreff'];
    und dann ein isset mit $betreff. Wenn das Formular nicht abgeschickt wurde, dann ist $_POST['betreff']; nicht vorhanden, aber du benutzt es trotzdem.

  • Zitat

    Also, ich muss da passen, ich kenne das Problem nicht und kann auch an deinem Quellcode nichts erkennen. Warum du allerdings überhaupt UTF-8 benutzt, verstehe ich schon nicht.

    Mir ist nicht wichtig ob UTF-8 oder nicht. Das einzig wichtige für mich ist,
    dass es funktioniert. Würde es eventuelle was bringen den Meta Tag
    zu löschen und zudem das $mail->CharSet = 'utf-8'; wieder zu entfernen.
    Oder kann das sogar etwas mit dem Browser zu tun haben. Dort
    ist als Zeichencodierung UTF-8 eingestellt.

    Zitat

    Wenn das Formular nicht abgeschickt wurde, dann ist $_POST['betreff']; nicht vorhanden, aber du benutzt es trotzdem.

    Naja dies tut soweit ich weiß ja nichts zur Sache, da man anschließend
    ja so oder so dann einen neuen Betreff eingibt und die Seite neu
    geladen wird, worin dann die Variable einen gültigen Wert hat.


    EDIT:
    PROBLEM ENDLICH GELÖST DAS HAT MICH EINEN GANZEN TAG BESCHÄFTIGT.
    - Meta Tag entfernen und den oben genannten Charset Code fürn PHP Mailer dann gehts.

    EDIT2:
    Wie könnte es ander sein, er sendet nur an den ersten beiden 2x die Mail und dann an keinen mehr.

    2 Mal editiert, zuletzt von Darkxor (1. Februar 2009 um 22:53)

  • Vor der Schleife mal diese Zeile einbauen:
    $mail->SMTPKeepAlive = true;

    Und nach der Schleife
    $mail->SmtpClose():

  • Daran liegt es leider auch nicht.
    Mit

    PHP
    var_dump ($row);


    habe ich herausgefunden das es irgendwie am Arry liegen muss.
    Denn darin ist nur enthalten:

    Zitat

    array(2) { [0]=> string(30) "xxxx@googlemail.com" ['email']=> string(30) "xxxx@googlemail.com" }


    2x die erste Mail in der Datenbank :(

  • Tja, bei kaputten Daten in der DB kann das Script nichts anderes machen. ;)

    Aber das SMTPKeepAlive und SmtpClose solltest du trotzdem drin lassen, dann wird die Verbindung zum SMTP-Server nicht bei jeder Mail geschlossen.

  • Hallo,
    woran erkennst du das die Daten kaputt sein sollen,
    ich habe die Daten erst eben wieder eingetragen und
    diesmal waren auch keine Charsetfehler dabei.

    Daher müsste es normalerweise nun gehen wenn es irgendwie
    daran liegen sollte.

    Deine SMTP Close... Erweiterungen lasse ich drin danke dafür.

  • Ähm, deine komplette Schleife ist falsch! Du rufst genau einmal mysql_fetch_array auf, und damit bekommst du das Array, wie du es bei var_dump siehst. Du möchtest aber doch über alle gefundenen eMails eine Schleife haben, oder?

    PHP
    while ($row = mysql_fetch_array($ergebnis))
    {
       $mail->AddAddress($row['email');
       :
       :
       :
       $mail->ClearAddresses();
    }
  • Hallo,
    ich habe versucht dies umzusetzen:


    Jedoch wird nun folgendes gemacht:

    Zitat

    array(2) { [0]=> string(27) "mail2@googlemail.com" ['email']=> string(27) "mail2@googlemail.com" } Die Email wurde versandt an mail2@googlemail.com Zeitpunkt: 02.02.2009 10:52.
    array(2) { [0]=> string(17) "mail3@xxxx.de" ['email']=> string(17) "mail3@xxxx.de" } Die Email wurde versandt an mail3@xxxx.de Zeitpunkt: 02.02.2009 10:52.

    Einmal editiert, zuletzt von Darkxor (2. Februar 2009 um 10:51)

  • Hallo bandit600,
    du hast mir wirklich sehr gut geholfen und hast immer sehr schnell geantwortet, dies ist nicht üblich und keineswegs
    selbstverständlich. Ich weiß nicht wie ich diesen Zeitaufwand wieder gutmachen kann, denn ich denke ohne deine Hilfe
    hätte ich es nicht geschafft, durch dieses Kleinprojekt habe ich nun zwingend gelernt, dass das Wichtigste am Programmieren
    die Übersichtlichkeit ist.
    Daher habe ich beschlossen den gesamten Code übersichtlich aufzuschreiben und es ist mir sichtlich gelungen, im anschließendem
    Test hat alles perfekt funktioniert und man kann nun ganz genau sehen, was wozu gehört.

    Allen anderen möchte ich den Code natürlich nicht vorenthalten und werde Ihn gleich im Edit posten.

    Einmal editiert, zuletzt von Darkxor (2. Februar 2009 um 18:18) aus folgendem Grund: Fertig

  • Da fehlt ein ' bei $_SESSION['lxxx]. Und wenn du das Problem nicht selber siehst, dann ist dir nicht mehr zu helfen. Du musst den Quellcode ordentlich eingerücken, und dann nur mal die Augen aufmachen!

  • @ bandit600
    Anscheinend hatte ich das Problem schon nebenbei behoben, da ich
    den Fehler nicht mehr finden kann jedenfalls funktioniert es nun einbandfrei. Siehe auch>

    Der fertige PHP Code:

    2 Mal editiert, zuletzt von Darkxor (2. Februar 2009 um 19:40)

  • Wenn du jetzt noch das isset mit den $_POST-Variablen machst, sieht das gut aus.

  • Grüße

    ich klink mich mal ein ;)

    ich nutze auch den PHP-Mailer und habe keinerlei Probleme mit dem versenden über z.B. web.de, arcor und t-online.

    Nun will ich mit freenet senden aber der debugger sagt es kann nicht zum smtp-host verbunden werden.

    Weiss jemand warum dies so ist?

    P.S. für freenet nutz ich den port 587 wie von freenet gewünscht.

    in der hoffnung hier schaut noch jemand rein verbleib ich

    mit freundlichen grüßen

    Ochsi