Nils Tholen: Formular Trouble Teil3 (mail funktion)

Hallo,

ich habe auf meinem rechner zu testzwecken Apache laufen!

Ich habe ein Formular, das verschiedene daten abfragt und diese zur Zeit in einer SQL Tabelle abspeichert.
Nun müssen aber diese Angaben auch noch per email an einen vorher ausgewählten Empfänger abgeschickt werden!
Ursprünglich war dazu ein Javascript da aber das geht ja leider nicht mehr weil es über das Action Feld aktiviert wurde.

Ich habe nun die emailfunktion innerhalb der funktion die die sql daten ausliest verfasst.
Fehlermeldungen bekomme ich auch keine, da aber mein Notebook keinerlei netzwerkverbindungen hat kann ich leider nicht überprüfen ob die email vershickt wurde.
Woran kann ich das sehen?!"?
gibt es irgend eine Log datei??

UND

Wie würdet IHR das email problem lösen??
ist meine Lösung überhaupt sinnvoll??

evtl wären auch beispiele für die richtigen lösungen hilfreich, da ich bisher keine lösungen für mein doch sehr spezielles Problem gefunden habe
Gruß
Nils

  1. Hab das nicht ausprobiert, aber was spricht dagegen, dem Submit-Button noch einen OnClick-Event-Handler mitzugeben, der dann das JavaScript auslöst, das Du vorher benutzt hast?

    Mfg, MF

    1. Beziehungsweise wieso benutzt Du nicht gleich einen ganz normalen Button, der ein JS aufruft, welches zuerst die Mail abschickt und dann über

      evt.getCurrentTarget();

      wieder auf den Button zugreift und das ihn umschließende Formular dann über die submit() Methode absendet?

      Mfg, MF

      1. Beziehungsweise wieso benutzt Du nicht gleich einen ganz normalen Button, der ein JS aufruft, welches zuerst die Mail abschickt und dann über

        evt.getCurrentTarget();

        wieder auf den Button zugreift und das ihn umschließende Formular dann über die submit() Methode absendet?

        Mfg, MF

        Beziehungsweise wieso benutzt Du nicht gleich einen ganz normalen Button, der ein JS aufruft, welches zuerst die Mail abschickt und dann über

        evt.getCurrentTarget();

        wieder auf den Button zugreift und das ihn umschließende Formular dann über die submit() Methode absendet?

        Mfg, MF

        Wie meinst du das??

        mein javascript wählt ja nur die empfänger aus, das emails versenden lief ja über die action im formular, das javascript hat lediglich die variablen geliefert (s.o mein zweites post)

        mein submit button führt übrigens zusätzlich 2 javbascripts aus

        onclick: dokument drucken,
        onmousedown: auf vollständige eingaben überprüfen

        Soll ich nun ein java script schreiben, das selber emails versenden kann???

        gruß
        Nils

        1. Du hattest im ersten Posting gesagt, dass ein Javascript für den Versand der E-Mail da war.
          Auch in Deinem zweiten Posting meintest Du, dass Dir der Versand über Java(script, nehme ich mal an) besser gefallen hat wegen Outlook etc.

          Also hattest Du doch eines dazu, oder steh ich jetzt irgendwie auf der Leitung?

          Egal wie, offensichtlich hattest Du doch schon eine funktionierende Lösung für das Versenden der Mail. Darum die Frage, wieso Du das nicht wieder einbaust (entweder in das neue Skript auf dem Server oder als Client-Skript, das unabhängig von der Formular-Action beim Mouse-Click aufgerufen wird).

          Mfg, MF

          1. Ich habe mich glaub ich falsch ausgedrückt!
            Angefangen bin ich mit einem Formular das per email versand wird

            das javascript dient dazu den empfänger zu wählen (Das meine ich mit dem javascript das emails versendet SORRY)

            Als das fertig war und alles toll lief wollte mein chef, daß ich es so gestalte , das die formulardaten auch noch in eine datenbank geschrieben werden, darum habe ich mir n bisschen php angeignet.

            Zur zeit sendet das formular seine daten ausschliesslich an die Datenbank, da man meines wissens nach nicht 2 verschiedene funktionen über die action methode des formulars benutzen kann.

            ich kann das nicht wieder rückgängig machen, da die datenbank gefüttert werden muss und man hat mir in einem früheren hilferuf dazu geraten, das mit php zu machen und die emailfunktion des browser zu vergessen und stattdessen die von php zu nutzen!
            mit der php email methode komme ich allerdings nicht klar ( darum dieser thread)

            aber du sagtest dass iche s mit jave machen könne.

            also brauche ich ein javascript, daß die formulardaten bei onclick einliest und die dann über outlook express verschickt (das wäre mir persönlich am liebsten, denn die normale mailto methode macht das ja auch über outlook express bzw den angegebenen standard mail handler)

            gruß
            nils

            1. Ok, jetzt hab ich's kapiert.
              Stand wohl wirklich etwas auf der Leitung ;)

              Also der einzige Weg, der mir jetzt spontan einfallen würde ist folgender:

              Du bastelst in das HTML-Gerüst noch ein unsichtbares Formular ein, welches als Action die eMail versendet.
              Also im Prinzip so:

              <form id="hiddenMailer" action="" method="post" enctype="text/plain">
                 <input type="hidden" id="wieNameAusHauptForm" name="" value=""/>
              </form>

              Wenn nun das andere Formular übermittelt wird, greifst Du per Javascript auf dieses zu, um die Werte zu übermitteln und es abzuschicken:

              function onMainFormSubmit() {
                 var myForm = document.getElementById("hiddenMailer");
                 myForm.setAttribute("action",mailAddress);

              //auf selbe Weise greifst Du auf die hidden Inputs zu und weist Ihnen die zu übergebenen Werte zu.
                 //Diese kannst Du aus dem Hauptformular mittels der getAttribute Methode auslesen.

              //Und zum Schluss nur noch
                 myForm.submit();

              }

              Das sollte theoretisch klappen. Ist vielleicht hier nicht ganz korrekt codiert, aber das wäre der Weg.
              Wie gesagt, nur das was mir auf die Schnelle eingefallen ist, gibt sicherlich bessere und elegantere Lösungen.
              Aber vielleicht hilft Dir das ein Stück weiter.

              Mfg, MF

              1. Gute idee, so etwas ähnliches schwebte mir auch vor:

                ein unsichtbares dokumen das die daten des sichtbaren kopiert und gleichzeitig mit dem sichtbaren verschickt wird!!
                ich hatte bloss ne blokade was die java script verbindung anging!

                könnte man nich theoretisch auch ein formular im formular machen??

                gruß
                Nils

                1. könnte man nich theoretisch auch ein formular im formular machen??

                  Laut der mir vorliegenden DTD geht das für HTML nicht.

                  Mfg, MF

                  1. Gut ich habs grad versucht zu coden, aber folgendes problem!
                    ich kenn mich nicht sooo gut damit aus!

                    also wie übergebe ich die values der einzelnen inputfelder an die des hidden mailers??

                    also getattribute und setattribute muss ich irgendiwe verwenden??

                    du hast nicht lust n kleines beispielz zu schreiben oder evtl n vorhandenes zu verlinken??
                    n formular mit einem input reicht völlig aus!

                    Gruss
                    Nils

                    1. Puh. Ok, ich versuch's mal mit Trockenschwimmen. Hab hier leider nicht die Zeit, das selbst auszuprobieren. Daher keine Garantie dass es funktionieren würde:

                      <html>
                      <head>
                      <script>
                         function mailIt() {
                            var orig = document.getElementById("firstText");
                            document.getElementById("h_firstText").setAttribute("name",orig.getAttribute("name"));
                            document.getElementById("h_firstText").setAttribute("value",orig.innerHTML);
                            var h_Form = document.getElementById("hiddenForm");
                            h_Form.setAttribute("action", "here@there.net");
                            h_Form.submit();
                         }
                      </script>
                      </head>
                      <body>
                      <form id="mainForm" action="myServerSkript.php">
                         <input type="text" id="firstText" name="explanation" size="30"/>
                         <input type="submit" onclick="mailIt();" value="Go"/>
                      </form>

                      <form id="hiddenForm" action="" method="POST">
                         <input type="hidden" id="h_firstText" name="" value=""/>
                      </form>
                      </body>
                      </html>

                      Hoffe, ich hab nicht zu weit danebengeschossen!

                      Mfg, MF

                      1. Ich seh grade.. das mit dem innerHTML funktioniert nicht. Wie Du bei Textboxen auf deren Inhalt zugreifen kannst, findest Du bei SelfHTML im Bereich Javascript bei den Beispielen (Wie überprüft man Formulareingaben?).

                        Mfg, MF

                        1. Ich seh grade.. das mit dem innerHTML funktioniert nicht. Wie Du bei Textboxen auf deren Inhalt zugreifen kannst, findest Du bei SelfHTML im Bereich Javascript bei den Beispielen (Wie überprüft man Formulareingaben?).

                          Mfg, MF

                          Ich werd mich morgen noch mal durchbeissen!!
                          Danke für deine Hilfe Mankofranko!

                          Ich schau morgen mal genauer nach wenn ich nixx anderes zu tun hab!
                          das schwierige ist immer ich hab nur eine bis 2 stunden zeit am tag weil es immer was anderes gibt!

                          Gruß

                          nils

  2. hi,

    Fehlermeldungen bekomme ich auch keine, da aber mein Notebook keinerlei netzwerkverbindungen hat kann ich leider nicht überprüfen ob die email vershickt wurde.

    wie soll denn dann eine mail verschickt werden, wenn keinerlei netzwerkverbindung besteht? (ich gehe mal davon aus, dass du mit einem lokalen webserver auf deinem notebook testest, richtig?)

    hast du denn _auf_ deinem notebook auh einen mailserver installiert, der die email in empfang nehmen könnte?

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. hi,

      Fehlermeldungen bekomme ich auch keine, da aber mein Notebook keinerlei netzwerkverbindungen hat kann ich leider nicht überprüfen ob die email vershickt wurde.

      wie soll denn dann eine mail verschickt werden, wenn keinerlei netzwerkverbindung besteht? (ich gehe mal davon aus, dass du mit einem lokalen webserver auf deinem notebook testest, richtig?)

      hast du denn _auf_ deinem notebook auh einen mailserver installiert, der die email in empfang nehmen könnte?

      gruß,
      wahsaga

      Nö, danach suche ich schon ne weile
      ich habe nur das phptriad paket installiert und mir schion gedacht, daß ich irgendwas mailmässiges einstellen muss!

      aber es steht in den foren immer nur was von lad dir n anderes paket runter oder nimm sonstwelchen client, ABER in apache ist doch n mailserver integriert???
      kann ich den nicht nutzen??

      eine kleine logdatei die den inhalt der email zeigt würde mir ja reichen dann kann ich später im intranet gleich loslegen oder brauch ichd afür auch n mailserver??

      MFG
      Nils

      1. hi,

        http://learn.to/quote, danke.

        aber es steht in den foren immer nur was von lad dir n anderes paket runter oder nimm sonstwelchen client, ABER in apache ist doch n mailserver integriert???

        nicht, dass ich wüsste.

        eine kleine logdatei die den inhalt der email zeigt würde mir ja reichen

        na dann versende halt nicht wirklich eine mail, sondern lasse den text bloß ausgeben, "auf dem bildschirm" oder in eine datei.

        dann kann ich später im intranet gleich loslegen oder brauch ichd afür auch n mailserver??

        wenn du normale breife schreibst - "brauchst" du dafür einen briefkasten, oder wirst du die auch einfach nur an den straßenrand und hoffst dass sie schon irgendwie ankommen werden ...?

        dein PHP muss so eingerichtet sein, dass es mails verschicken kann.
        entweder durch zugriff auf einen MTA im lokalen netzwerk, oder durch zugriff auf einen mailserver.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. nich so zynisch bidde...dange
          das die daten richtig eingelesen werden weiss ich ja sie stehen ja in der datenbank korrekt aso von daher brauch eich keine datenausgabe!
          ich möchte nur wissen, wie ich GLEICHZEIT in einer datenbank abspeichere und eine email verschicke!!!

          Das ganze muss idiotensicher sein, da daran n paar hundert leute arbeiten! ---> zwei klicks sind indiskutabel!!
          alles muss mit einem klick erledigt sein!

          Frage flasch verstanden würd ich sagen:
          WENN ich dieses Formular im intranet laufen lasse, muss mein Server, den ICH auf MEINEN rechner laufen habe dann einen mailserver haben oder reicht der eines anderen rechners!
          ich hab im moment noch etwas wenig ahnung von der netzwerkstruktur in der firma aber es wird viel über emails gemacht aber wie die das handhaben weiss ich selbst nicht!

          gruß
          Nils

          1. hi,

            ich möchte nur wissen, wie ich GLEICHZEIT in einer datenbank abspeichere und eine email verschicke!!!

            gar nicht.

            PHP arbeitet idR. keine verschiedenen aufgaben parallel ab, sondern mehrere aufgaben nacheinander.

            wo du dabei allerings ein problem siehst, leuchtet mir nicht ein.

            das ein script durchaus aus mehr als einer anweisung bestehen kann, sollte doch wohl bekannt sein.

            Das ganze muss idiotensicher sein, da daran n paar hundert leute arbeiten! ---> zwei klicks sind indiskutabel!!
            alles muss mit einem klick erledigt sein!

            hm, wenn dieser punkt für dich wirklich noch in frage steht, dann scheint dir wohl doch nicht bewusst zu sein, dass ein script durchaus mehrere aufgaben erfüllen kann ...

            WENN ich dieses Formular im intranet laufen lasse, muss mein Server, den ICH auf MEINEN rechner laufen habe dann einen mailserver haben oder reicht der eines anderen rechners!

            wie ich schon sagte, dein PHP muss zugriff auf einen MTA oder einen mailserver haben.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. Mit "gleichzeitig" meine ich mit einem "KLICK"!

              Wie scripte funktionieren weiss ich sehr gut !
              und Schleife kann ich auch!

              MFG
              Nils

              1. ich meine natürlich die schleifen bei den schuhen! (sonst wärs ja nich witzig ne)
                hihihihihi!

                MFG
                Nils

  3. Hi,
    ich nutze den laptop nur zu testzwecken,
    wenn ich fertig bin kommt das ins firmeneigene intranet!

    DAs Problem mit dem Javascript ist, daß es über die action methode ausgewählt wurde.

    <form name="Fehler" method="post"  action onSubmit="(document.Fehler.action += mailtoandsubject)"   enctype="text/plain">

    das dazugehörige javascript sorg dann dafür, dass ausgewählte empfänger und ein betreff eingesetzt werden.

    Da aber nun das php script mit
    <form name="Fehler" method="post"  action="Fehler.php"   enctype="text/plain">
     aufgerufen wird weiss ich nicht wohin das soll!
    Ich war mit dem Javascript sehr zufrieden!
    ich soll aber eine datenbank mitlaufen lassen!
    persönlich gefiel mir der versand über java auch besser da er outlook aufrief und somit berechnbar war! (dieses formular läuft auf zwei rechnern, die ich selber einrichten werde)

    und ihr meint ich kann das javascript auch anders einbinden??

    die formulardaten müssen ja sowohl in die datenbank als auch via email versandt werden!

    Gruß
    und danke für die schnellen antworten

    Nils