Ankündigung

Einklappen
Keine Ankündigung bisher.

E-Mail an mehrere Personen senden

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

  • E-Mail an mehrere Personen senden

    Hallo,
    ich möchte, dass meine E-Mail an mehrere Personen einzeln gesendet wird und komme aktuell nicht weiter. Ich habe schon das ganze Internet durchgesucht und nichts gefunden.

    Ruft man dann die send_mail.php auf, stellt sich das Problem heraus, dass die E-Mail Adressen für jeden Sichtbar sind. Wie bekomme ich es nun hin, dass jeder einzelne eine "eigene" E-Mail bekommt?
    Mein Ansatz sieht bis jetzt wie folgt aus:

    PHP-Code:
    <?php
    $empfaenger 
    file_get_contents("datei.txt");
    $betreff "Betreff"
    $from "From: Name <noreply@example.com>\n";
    $from .= "Content-Type: text/html\n";
    $text "Text"

    foreach($empfaenger as mail) {
        
    mail($empfaenger$betreff$text$from);
    }
    ?>
    Was muss an meinem Code ab foreach geändert werden? Das Foreach habe ich jetzt nur als Platzhalter genommen, weil ich dachte, dass es damit gehen würde.

    Mit freundlichen Grüßen


  • #2
    mail() ist murks und sollte roh nicht verwendet werden. Verwende stattdessen einen fertigen Mailer, z.B. SwiftMailer oder PhpMailer.
    Falls dich "Details" dazu interessieren einfach hier in die Forensuche mail() eingeben, da wirst du einiges zu finden.
    Hier der verwandte Eintrag in der WIssensammlung https://php-de.github.io/jumpto/mail-class/

    Zum Problem selbst. In $empfaenger steht ein String, du möchtest ein Array haben. Dafür gebe ich dir mal folgenden Schnipsel: https://eval.in/1002239
    Jetzt musst du in der foreach Schleife noch beachten, dass dein letzter Eintrag immer leer ist und dann hast dus.
    Angemerkt sei noch, txt-Dateien sind in der Regel nicht die schönsten Datenspeicher. Datenbanken oder wenigstens Standard-Formate (JSON, XML) vereinfachen die Arbeit in der Regel um einiges.

    Kommentar


    • #3
      Zitat von LudwigBr Beitrag anzeigen
      mail() ist murks und sollte roh nicht verwendet werden. Verwende stattdessen einen fertigen Mailer, z.B. SwiftMailer oder PhpMailer.
      Falls dich "Details" dazu interessieren einfach hier in die Forensuche mail() eingeben, da wirst du einiges zu finden.
      Hier der verwandte Eintrag in der WIssensammlung https://php-de.github.io/jumpto/mail-class/

      Zum Problem selbst. In $empfaenger steht ein String, du möchtest ein Array haben. Dafür gebe ich dir mal folgenden Schnipsel: https://eval.in/1002239
      Jetzt musst du in der foreach Schleife noch beachten, dass dein letzter Eintrag immer leer ist und dann hast dus.
      Angemerkt sei noch, txt-Dateien sind in der Regel nicht die schönsten Datenspeicher. Datenbanken oder wenigstens Standard-Formate (JSON, XML) vereinfachen die Arbeit in der Regel um einiges.
      Danke für die Antwort. Für den Anfang wollte ich mir dies erstmal als Übungsaufgaben stellen und zwar ohne einer Datenbank oder fertigen Mailer. Wie würde ich denn den Schnipsel bei mir oben einbauen? Er ließt ja die Addressanten aus einer Datei.

      Kommentar


      • #4
        Ändere dann auch mal domain.de in example.com, denn die verwendete Domain gehört bestimmt nicht dir.

        Dieser Teil ist auch Murks, und sollte dir bei eingeschalteter Fehlerkorrektur einen Fehler zeigen.
        PHP-Code:
        ...
        if(
        file_put_contents
        PHP vermutet da natürlich eine Konstante. Überlege mal was du tatsächlich prüfen willst?
        Fehler können im Script ausgegeben werden, wenn man an den Anfang eines jeden Scriptes

        error_reporting(-1);
        ini_set('display_errors', 1);


        schreibt.
        Besser ist es aber in der Emntwicklungsumgebung dies schon in der php.ini anzugeben.
        Folgendes gehört dann in die php.ini geschrieben:
        error_reporting = E_ALL
        display_startup_errors = On

        Wie würde ich denn den Schnipsel bei mir oben einbauen? Er ließt ja die Addressanten aus einer Datei.
        Die Adressaten kannst du natürlich aus einer Datei lesen, auch wenn das eher ungeschickt ist, da die Daten meist einfach einsehbar sind. Und zwar für jeden, also auch für Google, und dann könnten die in der Suchmaschine landen, was wiederum zu weiteren Problemen führen dürfte.
        Du solltest nicht so schlampig mit Daten anderer Menschen umgehen.

        Und im Handbuch steht unter Anmerkungen,, dass man mit mail() keine Massenmails rausschickt.
        Lies dich einfach mal in PHPMailer ein.

        Kommentar


        • #5
          Zitat von protestix Beitrag anzeigen
          Die Adressaten kannst du natürlich aus einer Datei lesen, auch wenn das eher ungeschickt ist, da die Daten meist einfach einsehbar sind. Und zwar für jeden, also auch für Google, und dann könnten die in der Suchmaschine landen, was wiederum zu weiteren Problemen führen dürfte.
          Du solltest nicht so schlampig mit Daten anderer Menschen umgehen.
          Ich habe dies auch nicht vor so das Skript zu verwenden. Ich will mich einfach nur darüber schlau machen.

          Kommentar


          • #6
            Dann schalte doch erst mal das error_reporting ein, und beseitige die Fehler.
            Sodann, lerne auch die Grundlagen, das macht einen schlau, du hast da Konstanten drin und keine Variablen.
            PHP-Code:
            foreach($empfaenger as mail

            mail ohne () und ohne ? davor ist eine Konstante.

            Was kommt denn raus, wenn du dies anwendest?
            PHP-Code:
            $empfaenger file_get_contents("datei.txt");
            var_dump($empfaenger); 

            Kommentar


            • #7
              Zitat von protestix Beitrag anzeigen
              Was kommt denn raus, wenn du dies anwendest?
              PHP-Code:
              $empfaenger file_get_contents("datei.txt");
              var_dump($empfaenger); 
              PHP-Code:
              <?php
              $empfaenger 
              file_get_contents("datei.txt");
              var_dump($empfaenger);
              $betreff "Betreff"
              $from "From: Name <noreply@example.com>\n";
              $from .= "Content-Type: text/html\n";
              $text "Text"

              foreach($empfaenger as mail) {
                  
              mail($empfaenger$betreff$text$from);
              }
              ?>
              Das scheint auch nicht zu funktionieren. Ich habe extra mal den Code angehängt, damit ausgeschlossen werden kann, dass ich mich vertippt oder vertan habe.

              Kommentar


              • #8
                mail() sollte ja auch nicht verwendet werden. Dachte, das wurde schon erwähnt.

                Die Verwendung von mail() ist äußerst komplex und eignet sich überhaupt nicht für ein Anfängerbeispiel.

                Kommentar


                • #9
                  ich möchte, dass meine E-Mail an mehrere Personen einzeln gesendet wird und komme aktuell nicht weiter. Ich habe schon das ganze Internet durchgesucht und nichts gefunden.
                  Nutze einen email Provider.

                  Kommentar


                  • #10
                    Zitat von tomBuilder Beitrag anzeigen

                    Nutze einen email Provider.
                    Wie bereits gesagt möchte ich nur etwas kleines probieren zu programmieren und nicht etwas fertiges verwenden, da dies auch nicht gebraucht wird. Ich habe aktuell auch nicht vor mit dem Skript zu arbeiten.

                    Kommentar


                    • #11
                      Wenn du lernen möchtest hast du hier doch genug Input bekommen. Meiner Meinung nach macht es allerdings wenig Sinn sich mit etwas auseinanderzusetzen, was nie zum Einsatz kommen wird.
                      Beim Lernen wirst du ums probieren nicht herumkommen. Wenn du meinen Schnipsel oben nicht integriert bekommst oder verstehst was dir in #6 von protestix gesagt wurde solltest du einen Schritt weiter vorne anfangen und in einem Tutorial die Grundlagen erlernen.

                      Kommentar

                      Lädt...
                      X