Ankündigung

Einklappen
Keine Ankündigung bisher.

Mailversand (SMTP) in forLoop...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mailversand (SMTP) in forLoop...

    ich habe ein kleins Problem mit ein Script, dass Mails versenden soll.
    Ich schaffe es nicht, dass ich mehr als eine Mail versende. beim zweiten bricht das Script ab. Leider ohne Fehlermeldung.
    Kann es sein, dass man per SMTP innerhalb kurzer Zeit nicht mehrere Mails versenden kann, oder mache ich einen anderen Fehler?

    PS: Ich verwende den "phpmailer".

    Gruß

    EDIT: Mir fällt gerade ein, dass die Einwahl (username, pw...) in dem forLoop stattfindet, sodass bei jeder Wiederholung eingewählt wird. Kann es leider erst am WE testen. Kann das das Problem sein?

  • #2
    Ohne Code können wir nichts dazu sagen

    Kommentar


    • #3
      OK. Hier der Code


      <?php
      $ulength = //vorher definiert mit glob....
      for ($i = 0 ; $i < $uLength ; $i++)
      {
      $tempFile = basename($uSearch[$i]);
      $uID = basename($uSearch[$i],".jpg");

      echo $tempFile ."<BR>";
      $uCheck = mysql_query("SELECT id FROM orders WHERE id=$uID");

      if(mysql_num_rows($uCheck)==1)
      {
      rename( $uIncomming . $tempFile , $pushPath . $tempFile );
      $newFile = $pushPath . $tempFile;


      $query = "SELECT * FROM orders WHERE id='$uID'";
      $result = mysql_query($query);

      while ($row = mysql_fetch_array($result))
      {
      $pNumber = $row[pNumber];
      $eMail = $row[email];
      echo $eMail ."<BR>";
      echo $pNumber ."<BR>";
      }

      require('../phpmailer/class.phpmailer.php');
      $mail = new PHPMailer();

      // SMTP-Server bestimmen
      $mail->IsSMTP();
      $mail->Host = "xxxx.mail.de";
      $mail->SMTPAuth = true;
      $mail->Username = "xxxxxxxx";
      $mail->Password = "xxxxxxxx";
      $mail->From = "xxxxxxxx";
      $mail->FromName = "xxxxxxxx";// important!!!
      $mail->AddAddress($eMail); // Empfängeradresse
      //$mail->AddAttachment("./pdf/eine_pdf_datei.pdf"); // Ein Attachmennt ist auch kein Problem
      $mail->Subject = "xxxxxxxxxxxx";// Der Betreff

      $mail->IsHTML(false);// Wenn man eine HTML-Mail verschicken möchte

      // Der Body
      $mail->Body = " xxxxxxxxxxxxxxxxxxx";
      $mail->AltBody = "This is a HTML-Mail...";

      // eMail senden
      if( ! $mail->Send())
      {
      echo "Mist, da hat was nicht funktioniert! " ."BR>";
      echo "Mailer Error: " . $mail->ErrorInfo;
      }
      else
      {
      echo "Email is send to " .$eMail ."<BR>";
      }

      } // End of Check ID in Database
      else
      {
      echo $tempFile ."<BR>";
      rename( xxxxxxxxxxxx );
      }

      } // End of forLoop

      ?>

      Kommentar


      • #4
        du überschreibst die Variable $email in deiner while-Schleife ja auch bei jedem durchgang, somit hast du immer nur die letzte Adresse...

        Kommentar


        • #5
          Von der logog her wird ja immer eine eMail versendet bevor $eMail wieder neu definiert wird.
          Sprich:
          - $eMail definieren
          - "eMail" senden

          - $eMail definieren
          - "eMail" senden

          Hat jemand ne Idee, was in dem Script schief läuft???

          Kommentar


          • #6
            hab ich dir bereits gesagt

            Kommentar


            • #7
              du musst in while schleife die mails versenden.
              sonst passiert das was Cycap schon gesagt hat !

              Kommentar


              • #8
                Danke cycap und 7Style.
                Werde es heute nacht mal zu Hause ausprobieren.

                Kommentar


                • #9
                  ich versteh nur nich was an meinem #4 post so unverständlich war...

                  du hast ja danach nochmal geschrieben wie der vorgang ablaufen sollte, aber im moment läuft er so:

                  Code:
                  ###Schleifenanfang###
                  $email füllen
                  $email nochmal füllen und damit alten wert überschreiben
                  $email nochmal füllen und damit alten wert überschreiben
                  $email nochmal füllen und damit alten wert überschreiben
                  $email nochmal füllen und damit alten wert überschreiben
                  $email nochmal füllen und damit alten wert überschreiben
                  $email nochmal füllen und damit alten wert überschreiben
                  $email nochmal füllen und damit alten wert überschreiben
                  ...
                  ###Schleifenende###
                  1 E-Mail versenden an den letzten Wert von $email

                  Kommentar


                  • #10
                    Halli.
                    Ich habe nun die Mailbefehle in die "While Schleife" gepackt. Die Mails werden versendet. Jedoch habe ich nun das Problem, dass mehrere Mails an einige Adressen genen.
                    Besser erklärt: Wenn 3 Mails versendet werden sollten (müssten). Passiert folgendes: Der erste kriegt 3 Mails. Der Zweite 2 Mails, und der Dritte krigt eine Mail.

                    Kann mir vielleicht jemand sagen, was ich umschreiben muss, damit jeder nur eine eMail kriegt?

                    Hier der Code: Diesmal Kommplett!!

                    Code:
                    $uSearch = glob("../Jpgs/Incomming/*.jpg");
                    $uIncomming = "../TEST/Incomming/";
                    $pushPath = "../TEST/Send/";
                    $errorPath = "../TEST/Error/";
                    $uLength = count($uSearch);
                    
                    if ($uSearch)
                        {
                        include "database.php";
                                    require('../phpmailer/class.phpmailer.php');
                                    $mail = new PHPMailer();
                    
                                    // SMTP-Server bestimmen
                                    $mail->IsSMTP();
                                    $mail->Host     = "mail.baxx.tv";
                                    $mail->SMTPAuth = true;
                                    $mail->Username = "xxxxxxxx";
                                    $mail->Password = "xxxxxxxx";
                                    $mail->From     = "xxxxxxxx";
                                    $mail->FromName = "xxxxxxxx";                
                                    $mail->Subject  =  "The Link for your Image";
                                    $mail->IsHTML(true);
                                    $mail->AltBody  =  "This is a HTML-Mail...";    
                    
                        for ($i = 0 ; $i < $uLength ; $i++)
                            {
                            $tempFile = basename($uSearch[$i]);
                            $uID = basename($uSearch[$i],".3gp");
                        
                            echo $tempFile ."<BR>";    
                            $uCheck = mysql_query("SELECT id FROM orders WHERE id=$uID");
                            
                            if(mysql_num_rows($uCheck)==1) 
                                {
                                echo "ja, ID ". $tempFile ." in der DB gefunden" ."<BR>";
                                
                                rename( $uIncomming . $tempFile , $pushPath . $tempFile );
                                $newFile = $pushPath . $tempFile;
                                
                                $query = "SELECT * FROM orders WHERE id='$uID'";
                                $result = mysql_query($query);
                    
                                while ($row = mysql_fetch_array($result))
                                    {
                                    $pNumber = $row[pNumber];
                                    $eMail = $row[email];
                                    echo $eMail ."<BR>";
                                    echo $pNumber ."<BR>";
                                    
                                    
                                            $mail->AddAddress($eMail); // Empfängeradresse
                                            $mail->Body  =  " Here the link for your Image  http://....de/Test/". $tempFile ;
                                    
                                            if( ! $mail->Send())
                                                {
                                                echo "Mist, da hat was nicht funktioniert! " ."BR>";
                                                echo "Mailer Error: " . $mail->ErrorInfo;
                                                }
                                            else
                                                {
                                                echo "Email is send to " .$eMail ."<BR>";
                                                }
                    
                                    }  // End of While Loop....
                    
                                } // End of Check ID in Database
                                else
                                {
                                echo $tempFile ."<BR>";
                                rename( $uIncomming . $tempFile , $errorPath . $tempFile );
                                }
                            
                            } // End of forLoop. 
                            
                        } // End of If Statement for checking uSearch
                        else
                        {
                        echo "Nothing to send....";
                        }

                    Kommentar


                    • #11
                      ich verstehe von deinem code,
                      das du bilder von einem Ordner liest,
                      und dann diese per email sendest.

                      Machmal folgendes, nimm Email versand von while schleife raus.
                      dafür schreibe alle emails in einem array
                      also nicht
                      $eMail = $row[email];
                      sondern
                      PHP-Code:
                       $eMail[]      = $row[email];   
                       
                      $tempFile[] = basename($uSearch[$i
                      danach musst du aussehalb deiner for schleife noch eine schleife schreiben ..

                      PHP-Code:
                              for($i $i count($eMail) ; $i++)
                              {
                                
                      // hier emails senden mail($eMail[$i])  Oder halt PHPmailer 
                               

                      Kommentar

                      Lädt...
                      X