friedrich: form-mailer

hallo.

ich habe nach einem form-mailer gesucht, um ein bestellformular zu gestalten. den habe ich auch gefunden, nämlich unter:

http://aktuell.de.selfhtml.org/artikel/php/form-mail/index.htm .

nun habe ich die in den quelltext-kommentaren eforderten schritte, das eintragen der email-adresse usw., vorgenommen und den ganzen code als htmlfile abgespeichert (in einen local apache ordner (xampp)).

öffne ich diese, erscheint das kontaktformular, ich mache die eingaben und drücke auf senden. danach erschient der hinweis, die seite könnte nicht angezeigt werden. das dormular wird zudem auch nicht an die im quelltext angegebene adresse gesandt.

kann dieser mailer nur auf einem wirklichen server verwendet werden oder wer hat eine idee, wieso er nicht funktioniert.

dank an alle wissenden.

Grüße.

  1. Hi,

    kann dieser mailer nur auf einem wirklichen server verwendet werden

    vereinfacht gesagt: ja - die Verarbeitung der Formulardaten erfordert eine serverseitrige Scriptsprache, in diesem Fall PHP.

    freundliche Grüße
    Ingo

    1. hallo.

      kann dieser mailer nur auf einem wirklichen server verwendet werden
      vereinfacht gesagt: ja - die Verarbeitung der Formulardaten erfordert eine serverseitrige Scriptsprache, in diesem Fall PHP.

      und es gibt keine möglichkeit, das auf meinem rechner zu installieren? ich dachte, mit xampp hätte ich die bedingung erfüllt.?

      danke.

      Grüße.

      1. Hallo friedrich,

        und es gibt keine möglichkeit, das auf meinem rechner zu installieren? ich dachte, mit xampp hätte ich die bedingung erfüllt.?

        natürlich, hast du auch! Ich mach's ja auch nicht anders, wenn ich PHP-Schnipsel teste. Müssen wir also nur noch rausfinden, warum es bei dir im Moment noch nicht hinhaut.
        Siehst du denn den PHP-Quelltext noch in der Quelltextansicht des Browsers, wenn du das Script über deinen localhost aufrufst?

        So long,
         Martin

        --
        Man sollte immer wissen was man sagt
         - aber auf keinen Fall alles sagen, was man weiß.
        1. hallo.
          danke für eure antowrten.

          natürlich, hast du auch! Ich mach's ja auch nicht anders, wenn ich PHP-Schnipsel teste. Müssen wir also nur noch rausfinden, warum es bei dir im Moment noch nicht hinhaut.
          Siehst du denn den PHP-Quelltext noch in der Quelltextansicht des Browsers, wenn du das Script über deinen localhost aufrufst?

          »»
          nein.

          jetzt bin ich soweit:

          ich rufe das script über localhost auf, führe submit aus.
          dann erscheint eine explorer-fehlermeldung, irgendwas von port 25 und smpt.? hab jetzt leider im moment keinen zugriff auf das script, viell. kann ich es späeter noch posten.

          aber ich glaube, ihr wisst bereits, was ich meine.

          was muss ich zur einwandfreien funktion noch abändern?

          danke und weiterhin nen schönen mittag!

          Gruß

          1. Hi,

            Siehst du denn den PHP-Quelltext noch in der Quelltextansicht des Browsers, wenn du das Script über deinen localhost aufrufst?
            nein.

            das ist gut - also wird der PHP-Code tatsächlich verarbeitet.

            jetzt bin ich soweit:
            ich rufe das script über localhost auf, führe submit aus.
            dann erscheint eine explorer-fehlermeldung, irgendwas von port 25 und smpt.?

            Hm, die kommt eigentlich nicht vom Explorer, aber egal. Das heißt, PHP möchte eine Verbindung zum SMTP-Server aufbauen (Postausgang, Port 25), und das bedeutet, dass das Script tatsächlich ausgeführt wird und Mail verschicken will. Wie man Mails verschickt, müsstest du deinem PHP nun noch verklickern.

            Testest du auf einem Windows-PC? Dann müsstest du in der PHP.ini den SMTP-Server eintragen, über den du die Mails versenden willst, sowie die zugehörige Portnummer (normalerweise 25) und die dafür nötigen Zugangsdaten.

            Ist dein Testsystem dagegen eine Unix-Büchse, musst du stattdessen den Pfad zum sendmail-Programm eintragen, das auf deinem System für das Versenden von Mails zuständig ist.

            Auf jeden Fall bist du auf dem richtigen Weg. :-)

            So long,
             Martin

            --
            Was du heute kannst besorgen,
            das geht sicher auch noch morgen.
            1. Hallo.

              Testest du auf einem Windows-PC? Dann müsstest du in der PHP.ini den SMTP-Server eintragen, über den du die Mails versenden willst, sowie die zugehörige Portnummer (normalerweise 25) und die dafür nötigen Zugangsdaten.

              ja, ich teste auf einem windows-system. mit einer php.ini hab ich noch keine erfahrung.

              gibts bei selfhtml ein beispiel?

              was für einen smtp-server?

              muss ich mich hierfür wo anmelden?

              danke für deine hilfe!

              Gruß

              p.s.: noch ne andere frage nebenbei: das angebot von www.hosteurope.de ist doch ok, von dem angebot her, oder täusche ich mich da?

              1. zum vorigen posting noch:

                das ist die fehlermeldung:

                Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Programme\xampp\htdocs\myphp\formmailertest.php on line 45
                Die Mail konnte nicht versendet werden.

                danke und ciao.

                1. Hallo,

                  zum vorigen posting noch:
                  das ist die fehlermeldung:

                  Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Programme\xampp\htdocs\myphp\formmailertest.php on line 45
                  Die Mail konnte nicht versendet werden.

                  okay, sowas in der Art hatte ich mir gedacht - also keine Explorer-Fehlermeldung, sondern eine von PHP. Und das Problem ist genau das, was ich auch angedeutet habe: Du hast PHP noch nicht verraten, über welchen Mailserver du eigentlich Mails verschicken willst/darfst. Und genau diese Angaben stehen in der php.ini, der Konfigurationsdatei von PHP.

                  In der Default-Installation stehen dort irgendwo folgende Zeilen:

                  [mail function]
                  ; For Win32 only.
                  SMTP = localhost
                  smtp_port = 25
                  sendmail_from = <mailadresse>

                  In der Zeile "SMTP = " ergänzt du bitte anstatt localhost den SMTP-Server deines Providers, über den du sonst normalerweise deine Mails versendest (bei GMX wäre das z.B. mail.gmx.net), smtp_port bleibt normalerweise auf 25 stehen, das ist der Standardwert. Und nach "sendmail_from = " trägst du deine Mailadresse ein, die dann als Absender ausgehender Mails eingetragen wird.

                  Schwierig wird es, wenn dein Mail-Provider eine Authentifizierung beim SMTP-Zugang erfordert (SMTP-AUTH). Soweit ich weiß, kann die Windows-Version von PHP damit nicht umgehen; dann müsstest du wahrscheinlich den SMTP-Dialog auf Socket-Ebene "von Hand" nachbilden. Das wäre dann allerdings eine elende Fleißarbeit - es würde im Prinzip bedeuten, einen (E)SMTP-Client in PHP zu programmieren. Einfacher (aber nicht trivial) wäre es da schon, lokal einen eigenen SMTP-Mailserver zu installieren.

                  Good luck,
                   Martin

                  --
                  F: Was macht ein Offizier, der in der Nase bohrt?
                  A: Er holt das Letzte aus sich heraus.
                  1. hallo.

                    danke martin!

                    werde jetzt mal die sache versuchen.

                    bei xampp ist ja auch noch so ein mercurymailer dabei.
                    ist das ein smtp-mailserver? oder was versteht man darunter konkret?

                    mal sehen.. danke nochmal.

                    Grüße.

                    1. n'Abend,

                      bei xampp ist ja auch noch so ein mercurymailer dabei.

                      echt?! Hey, dann haben wir so gut wie gewonnen. Mercury ist genial!
                      Nicht ganz trivial, aber da ich den auch seit über zwei Jahren aktiv benutze, kenn ich das gute Stück mittlerweile ganz gut.

                      ist das ein smtp-mailserver?

                      Nicht nur das. Mercury ist ein SMTP/POP3/IMAP-Mailserver, ein Mail-Proxy, ein Mail-Durchreicher, ganz wie man es haben will. Sehr flexibel einsetzbar.

                      Für deinen Fall -du willst ja in erster Linie Mails versenden können- solltest du nach der Installation von Mercury erstmal nur diese Module aktivieren:
                       * MercuryS  SMTP Server
                       * MercuryC  SMTP Client
                      Wenn du soweit bist, melde dich einfach nochmal kurz, dann kriegen wir das hin.

                      So long,
                       Martin

                      --
                      Alleine sind wir stark...
                      gemeinsam sind wir unausstehlich!
                      1. hallo.

                        also mercury war schon installiert, jetzt hab ichs aktiviert (über das xampp control panel). die module sind jetzt aktiv.

                        richtig, ich will mails versenden; damit es zu keinen missverständnissen kommt: mails mit dem inhalt eines formulars.

                        ja, also jetzt die frage: wie wende ich den mailer an bzw. wie muss ich ihn in mein script einbauen.

                        Gruß.

                        1. zusatz:

                          wenn ichs jetzt auf dem bisherigen stand ausprobiere, kommt eine neue fehlermeldung:

                          Warning: mail() [function.mail]: SMTP server response: 553 We do not relay non-local mail, sorry. in C:\Programme\xampp\htdocs\myphp\formmailertest.php on line 45
                          Die Mail konnte nicht versendet werden.

                          1. hallo, wieder.

                            habe es soweit versucht, die fehlermeldung erscheint aber wieder.

                            ein feld "Credentials..."  habe ich bei mir allerdings nicht gefunden (hier muss nur das passwort oder auch nochmal der nick rein)?

                            langsam bin ich überlastet... ;-)

                            mit der php.ini die ich ändern soll, liege ich mit der, bei mir unter xampp/php (merke!: nicht der gleiche folder wie das formular), schon richtig, oder? indem ordner sind zwar zwei (?), ich habe beide geändert.

                            auch mercury gibt den fehler aus, nämlich im smtp server fenster, und zwar: 553 we do not relay non-local mail,sorry. soll das heißen, mein sytem wird wegen einer falschen einstellung nicht als local angesehen? wie finde ich meine nummer raus, habe jetzt einfach mal die von dir übernommen?

                            abgesehen von allem:
                            wenn ich später dann mal die fertige page auf einem webspace abgelegt habe, muss ich darauf dann auch das xampp (+mercury mailer) installieren, oder wie läuft das dann "im betrieb".

                            danke.

                            Gruß.

                            1. noch ein zusatz:

                              wenn ich in dem php formular als empfänger nciht xyz@xyz.de angebe, sondern admin@localhost funktioniert der mailer.?

                              1. hello again.

                                nun hab ich weiter versucht und versucht. der stand der dinge ist jetzt: alles läuft (ich kann im formular auf senden klicken u komme zur folgeseite, mercury startet einen process, der dann aber im smtp client mit der meldung:

                                temporary error 249 (temporary mx resolution error) resolving freenet.de

                                abbricht. zur info: die empfängeradresse endet auf freenet.de

                                woran hackt es nun? fehlende autorisation?

                                wäre sehr dankbar, wenn du/ihr nochmal nen tip hättet.

                                danke.

                                Grüße.

                                1. hallo.

                                  wer kann noch eine antwort geben?

                                  wäre nett, wenn sich der ein oder andere zu den genannten problemen nochmal äußern könnte.

                                  danke !

                                  Grüße.

                            2. Hallihallo,

                              sorry, ich war ein Weilchen beschäftigt - und dann war plötzlich das Forum weg ... :-(

                              ein feld "Credentials..."  habe ich bei mir allerdings nicht gefunden

                              Dann sieh nochmal genau hin. ;-)

                              (hier muss nur das passwort oder auch nochmal der nick rein)?

                              Äh, was meinst du damit? Benutzername und Kennwort bei deinem Mail-Provider - oder was meinst du mit dem Nick?

                              mit der php.ini die ich ändern soll, liege ich mit der, bei mir unter xampp/php (merke!: nicht der gleiche folder wie das formular), schon richtig, oder?

                              Ich nehm's an, ja. Müsste im Installationsverzeichnis von PHP liegen.

                              indem ordner sind zwar zwei (?), ich habe beide geändert.

                              Zwei? Das kann nicht sein! In einem Verzeichnis können keine zwei Dateien denselben Namen haben.

                              auch mercury gibt den fehler aus, nämlich im smtp server fenster, und zwar: 553 we do not relay non-local mail,sorry. soll das heißen, mein sytem wird wegen einer falschen einstellung nicht als local angesehen?

                              Nee, sorry, da habe ich wohl etwas übersehen. Mercury ist in der Defaulteinstellung so erzogen, dass er nur Mails innerhalb des eigenen Netzwerks zustellt. Da fehlt wahrscheinlich noch das Häkchen in den Einstellungen von MercuryS (SMTP-Server) auf der Registerkarte "Connection Control" bei
                               [X] Authenticated SMTP connections may relay mail
                              damit Mercury überhaupt Mails in andere Netze weiterleitet.

                              wenn ich in dem php formular als empfänger nciht xyz@xyz.de angebe, sondern admin@localhost funktioniert der mailer.?

                              Genau. Diese Nachricht wird ja auch nicht in ein anderes Netz geroutet, sondern bleibt lokal.

                              wenn ich später dann mal die fertige page auf einem webspace abgelegt habe, muss ich darauf dann auch das xampp (+mercury mailer) installieren, ...

                              Jesses, nein! Üblicherweise darfst du davon ausgehen, dass das bei gemietetem Webspace fertig eingerichtet ist - zumal die meisten Server unter Unix-ähnlichen Systemen laufen und ganz andere Mail-Software verwenden.

                              nun hab ich weiter versucht und versucht. der stand der dinge ist jetzt: alles läuft (ich kann im formular auf senden klicken u komme zur folgeseite, mercury startet einen process, der dann aber im smtp client mit der meldung:
                              temporary error 249 (temporary mx resolution error) resolving freenet.de
                              abbricht. zur info: die empfängeradresse endet auf freenet.de

                              Oh-oh. Das hört sich an, als hättest du "versehentlich" das MercuryE-Modul (End-to-end SMTP delivery) anstatt MercuryC (SMTP relaying client) aktiv. Dann versucht Mercury nämlich auf eigene Faust, die Mails bis zum Empfänger durchzureichen, anstatt das deinem Mail-Provider zu überlassen. Denn normalerweise dürfte es Mercury _überhaupt nicht_ interessieren, was beim Empfänger möglicherweise gerade für Probleme bestehen, weil das dein kommerzieller Provider übernimmt, bei dem du auch dein Postfach hast.

                              So long,
                               Martin

                              --
                              Mir geht es gut. Ich mag die kleinen Pillen, die sie mir dauernd geben.
                              Aber warum bin ich ans Bett gefesselt?
                              1. Hallo.

                                sorry, ich war ein Weilchen beschäftigt - und dann war plötzlich das Forum weg ... :-(

                                Keine ursache, ganz im gegenteil: ich bin froh, so ausführlich auskunft zu erhalten. danke.

                                Zwei? Das kann nicht sein! In einem Verzeichnis können keine zwei Dateien denselben Namen haben.

                                Das dachte ich bisher auch. die eine file ist eine ini-dist-datei, die andere eine ini-recommended-datei.inhaltlich sind sie sehr ähnlich, die daten zur mail-function haben sie beide drin.?

                                Jesses, nein! Üblicherweise darfst du davon ausgehen, dass das bei gemietetem Webspace fertig eingerichtet ist - zumal die meisten Server unter Unix-ähnlichen Systemen laufen und ganz andere Mail-Software verwenden.

                                »»
                                heißt das, die website auf dem webspace benötigt lediglich ein php-formular mit der function mail(), der rest erledigt dann, bei gegebenen bedingungen, der anbieter über seinen server? sprich: ist das, was ich gerade versuche unnötig, wenn ich nicht von meinem lokalen system mails versenden möchte?

                                Oh-oh. Das hört sich an, als hättest du "versehentlich" das MercuryE-Modul (End-to-end SMTP delivery) anstatt MercuryC (SMTP relaying client) aktiv.

                                hab nach der entsprechden einstellung gesucht, aber wieder nicht gefunden. meine einstellungen sehen den deinen (scrrenshot) nicht sehr ähnlich. welche version des mercury mailer verwendest du, wo kann ich sie ziehen?

                                herzlichen dank für deine bemühungen !

                                Mit freundlichen Grüßen,

                                friedrich.

                                1. Hi,

                                  In einem Verzeichnis können keine zwei Dateien denselben Namen haben.
                                  Das dachte ich bisher auch. die eine file ist eine ini-dist-datei, die andere eine ini-recommended-datei.

                                  ah so, also *nicht* gleichnamig. Eine php.ini ohne weitere Namenszusätze hast du da nicht? Dann arbeitet dein PHP also ausschließlich mit den Defaulteinstellungen, was immer die sein mögen.
                                  Wie der Name schon vermuten lässt, enthält die php.ini-recommended eine Reihe *empfohlener* Grundeinstellungen. Du bist vermutlich gut bedient, wenn du die einfach in php.ini umbenennst und dann bei Bedarf einzelne Optionen anpasst.

                                  heißt das, die website auf dem webspace benötigt lediglich ein php-formular mit der function mail(), der rest erledigt dann, bei gegebenen bedingungen, der anbieter über seinen server?

                                  Genau.

                                  sprich: ist das, was ich gerade versuche unnötig, wenn ich nicht von meinem lokalen system mails versenden möchte?

                                  Du hast es erfasst. ;-)
                                  Die ganze Mühe ist nur nötig, weil Windows -im Gegensatz zu Unix/Linux-Derivaten- von Haus aus keinen Mailserver bzw. MTA mitbringt.

                                  hab nach der entsprechden einstellung gesucht, aber wieder nicht gefunden. meine einstellungen sehen den deinen (scrrenshot) nicht sehr ähnlich. welche version des mercury mailer verwendest du, wo kann ich sie ziehen?

                                  Version 4.01a von 2003, das ist immer noch die aktuelle. Findest du auch auf der Download-Seite des Herausgebers.

                                  herzlichen dank für deine bemühungen !

                                  Keine Ursache - wenn wir das irgendwann noch hinkriegen, hat sich die Mühe doch wenigstens gelohnt. Bei mir war's damals viel einfacher. Aber das könnte auch daran liegen, dass ich mich mit den Interna etwas auskenne und daher gezielter vorgehen kann.

                                  Schönen Abend noch,
                                   Martin

                                  --
                                  Wenn alle das täten, wass sie mich können,
                                  käme ich gar nicht mehr zum Sitzen.
                        2. Hallo friedrich,

                          also mercury war schon installiert, jetzt hab ichs aktiviert (über das xampp control panel).

                          okay, ich kenne das xampp-Paket nur vom Hörensagen - ich installiere die Komponenten lieber einzeln. ;-)

                          die module sind jetzt aktiv.

                          Die beiden, die ich genannt hatte? Gut.

                          Dann geh mal in Mercury zu Configuration/Mercury Core Module. Die meisten Einstellungen kann man hier auf ihren Defaults stehen lassen. Aber auf dem Register "Local Domains" solltest du Mercury verraten, von wem er überhaupt Mails annehmen darf, z.B. localhost/[127.0.0.0] (ja, die letzte Null ist richtig, Mercury will hier die Netzwerkadresse wissen, nicht die genaue IP-Adresse des Clients). Ansonsten war's das an dieser Stelle schon.

                          Nächste Baustelle wäre Configuration/SMTP Server, aber das sollte mit den Defaultwerten abgegolten sein.

                          Also weiter zu Configuration/SMTP Client. Hier brauchst du nun die Daten deines Mail-Providers, da Mercury nichts weiter tun soll, als die Mails dorthin weiterzureichen. Also muss er ganz oben auf jeden Fall den Servernamen wissen. Den bekommst du notfalls aus der Konfiguration deines regulären Mailclients raus. Unter "Announce myself as" trägst du einen Namen ein, mit dem sich Mercury beim Mailserver des Providers meldet, das könnte zum Beispiel wieder der Rechnername sein. Im Feld "Credentials..." trägst du nun die Anmeldedaten ein, die du sonst auch zum Login beim Mailserver deines Providers brauchst.

                          Zum Schluss nochmal einen Blick in die php.ini werfen - mit den Defaultwerten für den Mailversand (SMTP=localhost, smtp_port=25, sinnvolle Absenderadresse eintragen!) sollte der Fall erledigt sein.

                          wenn ichs jetzt auf dem bisherigen stand ausprobiere, kommt eine neue fehlermeldung:

                          Warning: mail() [function.mail]: SMTP server response: 553 We do not relay non-local mail, sorry.

                          Die Meldung kommt schon von Mercury, der arbeitet also schon. :)
                          So, na dann versuchen wir's mal!

                          So long,
                           Martin

                          --
                          Ungeschehene Ereignisse können einen katastrophalen Mangel an Folgen nach sich ziehen.
                            (Unbekannter Politiker)
      2. Hi,

        ich dachte, mit xampp hätte ich die bedingung erfüllt.?

        nicht so ohne weiteres. Du musst zum Versand von E-Mails (ich vermute das meintest Du mit Adresse) noch einen Mailserver konfigurieren. Außerdem musst Du natürlich schauen, dass Du das Script korrekt referenzierst und es auch von PHP geparsed wird. In Deiner Adresszeile sollte dann (bei den Standardeinstellungen von xammp) http://localhost/[pdad/][datei].php stehen.

        freundliche Grüße
        Ingo

  2. Hallo,

    nun habe ich die in den quelltext-kommentaren eforderten schritte, das eintragen der email-adresse usw., vorgenommen und den ganzen code als
    htmlfile abgespeichert (in einen local apache ordner (xampp)).

    ^^^^

    Ich denke, Du müsstest dann dem Server mitteilen, html Dokumente duch den PHP Parser zu jagen, oder das Dokument nicht als html sondern als php Dokument abspeichern. Kann das sein?

    netten Tag
    ^da Powl

    --
    ===============================
    powl.hat-gar-keine-homepage.de/