tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
20
ZUGRIFFE
962
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Alex363 Tutorials.de Gastzugang
    Hallo, ich möchte gerne die Option haben über eine Webseite ein Mail via einem Kontaktformular zu versenden. Dazu habe ich dieses PHP-Script im Netz gefunden:

    PHP-Code:
    <?php
    if(isset($_POST["message"])) {
    if(isset(
    $_POST["email"])) {
    $mail mail($_POST["email"],$_POST["betreff"],$_POST["message"],"From: ".$_POST["from"]);
    }
    else {
    echo 
    "Keine e-Mail Adresse angegeben. Die Mail wurde nicht gesendet.<br/>";
    }
    }
    else {
    echo 
    "Es wurde keine Nachricht eingegeben. Die Mail wurde nicht gesendet.<br/>";
    }
    ?>
    <html>
    <body>
    <form action="sendmail.php" method="POST">
       eMail: <input type="text" name="email"><br/>
       Betreff: <input type="text" name="betreff"><br/>
       Message: <textarea name="message"></textarea><br/>
       <input type="hidden" name="from" value="none@testserver.com">
       <input type="submit" value="abschicken">
    </form>
    </body>
    </html>

    Allerdings ist mir das Textfeld in das man die Nachricht schreibt zu klein, wie macht man das größer?

    Und dann möchte ich dass das versenden auch möglich ist, wenn man kein POP3 Mail auf dem Rechner installiert hat. Wo gebe ich dann die Adresse an, um die Nachrichten aus dem Web zu erhalten?
     

  2. #2
    Avatar von Jacka
    Jacka Jacka ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Beiträge
    390
    Hi!

    Das Textarea-Element bekommst du mit der Angabe rows und cols breiter und höher, z.B.:
    Code :
    1
    
    Message: <textarea name="message" rows="10" cols="50"></textarea><br/>

    kein POP3 Mail auf dem Rechner installiert hat

    Auf dem Rechner? Du meinst ganz ohne Mailserver? Geht nicht..

    Viele Grüße,
    Jacka
     
    Biologie ist das was lebt, Chemie das was kracht und Physik das, wo nichts funktioniert!

    - - - - - - - - - - - - - - - -

    Open Source JS-Framework für Business Web-Applications: ExtJS

  3. #3
    Alex363 Tutorials.de Gastzugang
    Zitat Zitat von Jacka Beitrag anzeigen
    Auf dem Rechner? Du meinst ganz ohne Mailserver? Geht nicht..
    Nur beim abschicken, so das die Nachricht nicht über Outlook Express verschickt wird.
    Viele benutzen nämlich GMX oder Hotmail.
    Ich weiß nicht wie ich das erklären soll, aber die Nachricht soll über den Explorer versendet werden, eine kleine Anzeige an den Benutzer wäre dann nicht schlecht das die Mail verschickt ist. Und wo gibt man in dem Script die Empfängeradresse an, dort wo die Nachricht ankommen soll?
     

  4. #4
    Avatar von split
    split split ist offline Mitglied Platin
    Registriert seit
    Jan 2004
    Ort
    München
    Beiträge
    574
    Wenn du dieses Script benutzt, braucht der Anwender keinen POP3-Client installiert haben. Das einzig nötige ist ein SMTP-Dienst auf der Serverseite und dieser wird wohl vorhanden sein (egal, bei welchem Anbieter du bist).

    Im Moment ist es so, dass das Script die Email an die im Textfeld "Email" angegebene Mailadresse sendet und als Absender den Wert des versteckten Felds "from" benutzt. Wenn du einen festen Empfänger definieren willst und die im Textfeld "Email" angegebene Mailadresse als Absender fungieren soll, dann schreib dein Script etwas um:
    PHP-Code:
    <?php

    $empf 
    "dein@empfaenger.com";

    if(isset(
    $_POST["message"])) {
       if(isset(
    $_POST["email"])) {
          
    $mail mail($empf$_POST["betreff"], $_POST["message"], "From: ".$_POST["email"]);
       } else {
          echo 
    "Keine e-Mail Adresse angegeben. Die Mail wurde nicht gesendet.<br/>";
       }
    } else {
       echo 
    "Es wurde keine Nachricht eingegeben. Die Mail wurde nicht gesendet.<br/>";
    }
    ?>
    <html>
    <body>
    <form action="sendmail.php" method="POST">
       eMail: <input type="text" name="email"><br/>
       Betreff: <input type="text" name="betreff"><br/>
       Message: <textarea name="message"></textarea><br/>
       <input type="submit" value="abschicken">
    </form>
    </body>
    </html>
    Das Script als solches ist allerdings nicht wirklich sicher. Du solltest dich diesbezüglich noch dringend informieren, bevor du es einsetzt!
     
    Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut

  5. #5
    Alex363 Tutorials.de Gastzugang
    Zitat Zitat von split Beitrag anzeigen
    [php]
    <?php

    $empf = "dein@empfaenger.com";
    Das ist dann der feste Empfänger?

    Zitat Zitat von split Beitrag anzeigen
    Das Script als solches ist allerdings nicht wirklich sicher. Du solltest dich diesbezüglich noch dringend informieren, bevor du es einsetzt!
    Was bedeutet sicher? Macht es Fehler?
     

  6. #6
    Avatar von split
    split split ist offline Mitglied Platin
    Registriert seit
    Jan 2004
    Ort
    München
    Beiträge
    574
    Hallo!

    Zu 1)
    Ja, das ist der feste Empfänger.

    Zu 2)
    Problem 1: Das Script wird auch dann abgeschickt, wenn man die Eingabefelder leer lässt.
    Problem 2: Ein böser Mensch könnte die Header der Mail modifizieren!

    Ich hab mir dein Script nochmal kurz angesehen und beide Probleme behoben:
    PHP-Code:
    <?php

    /**
     * Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
     * ansonsten wird 0 zurückgegeben.
     */
    function checkmail($mail) {
       return 
    preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]+\.[a-z]+$#i'$mail);
    }

    // Empfänger
    $empf "dein@empfaenger.com";

    // Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
    if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
       die(
    "Bitte einen Betreff eingeben!");

    // Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
    if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
       die(
    "Bitte eine Nachricht eingeben!");

    // Wenn Email ungültig ist, Fehler!
    if(!isset($_POST["email"]) ||!checkmail($_POST["email"]))
       die(
    "Bitte eine g&uuml;ltige Emailadresse angeben!");

    // mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
    mail($empfstr_replace("\n"""$_POST["betreff"]), str_replace("\n.""\n.."$_POST["message"]), $_POST["email"]);

    ?>
    <html>
    <body>
    <form action="sendmail.php" method="POST">
       E-Mail: <input type="text" name="email"><br/>
       Betreff: <input type="text" name="betreff"><br/>
       Message: <textarea name="message"></textarea><br/>
       <input type="submit" value="abschicken">
    </form>
    </body>
    </html>
    Ich hoffe, ich konnte dir helfen!
    Geändert von split (23.03.07 um 15:26 Uhr) Grund: Ein kleiner Fehler im Script!
    Hroudtwolf bedankt sich. 
    Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut

  7. #7
    Alex363 Tutorials.de Gastzugang
    Ja, vielen Dank
    Geändert von alexderennes (15.03.07 um 21:58 Uhr)
     

  8. #8
    Alex363 Tutorials.de Gastzugang
    Tut mir leid aber das abschicken funktioniert noch nicht, ich habe das auf dem Webserver getestet, folgende Meldung kommt wenn man den Text abschickt:

    Parse error: syntax error, unexpected T_STRING in /var/www/users/krizz/sendmail.php on line 1
     

  9. #9
    Avatar von split
    split split ist offline Mitglied Platin
    Registriert seit
    Jan 2004
    Ort
    München
    Beiträge
    574
    Ich hab den Fehler im oberen Script ausgebessert!
     
    Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut

  10. #10
    Alex363 Tutorials.de Gastzugang
    Aber der Fehler ist immer noch da:
    Parse error: syntax error, unexpected T_STRING in /var/www/users/krizz/sendmail.php on line 1

    Was heißt das überhaupt?
     

  11. #11
    Avatar von split
    split split ist offline Mitglied Platin
    Registriert seit
    Jan 2004
    Ort
    München
    Beiträge
    574
    Also bei mir gibt es keinen Fehler! Aber vielleicht hast du ja noch andere Dateien eingebunden?

    Parse error: syntax error, unexpected T_STRING in /var/www/users/krizz/sendmail.php on line 1
    Das bedeutet, dass in der Zeile 1 der Datei /var/www/users/krizz/sendmail.php ein Syntaxfehler (= Parse error) aufgetreten ist. "unexpected T_STRING" bedeutet, dass der Fehler ein unerwarteter String ist (warscheinlich hast du irgendein Zeichen vergessen, z.B. bei einem Funktionsaufruf ein Komma vor dem zweiten Parameter).
    PHP-Code:
    function1("test""foo" "bar"); 
    Das würde einen solchen Fehler geben, weil die Parameter "foo" und "bar" nicht durch ein Komma voneinander getrennt sind. "bar" wäre dann der "unerwartete String"!
     
    Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut

  12. #12
    Alex363 Tutorials.de Gastzugang
    Mhm, der Fehler bleibt

    Meine sendmail.php schaut so aus:
    PHP-Code:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    <?php

    /**
     * Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
     * ansonsten wird 0 zurückgegeben.
     */
    function checkmail($mail) {
       return 
    preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]\.[a-z]++$#i'$mail);
    }

    // Empfänger
    $empf "alex1110@aol.com";

    // Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
    if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
       die(
    "Bitte einen Betreff eingeben!");

    // Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
    if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
       die(
    "Bitte eine Nachricht eingeben!");

    // Wenn Email ungültig ist, Fehler!
    if(!checkmail($_POST["email"]))
       die(
    "Bitte eine g&uuml;ltige Emailadresse angeben!");

    // mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
    mail($empfstr_replace("\n"""$_POST["betreff"]), str_replace("\n.""\n.."$_POST["message"]), $_POST["email"]);

    ?>
    <html>
    <body>
    <form action="sendmail.php" method="POST"><p></p><center>
       E-Mail: <input type="text" name="email"><br/><p></p>
       Betreff: <input type="text" name="betreff"><br/><p></p>
       <center>Nachricht:</center><p></p><center> <textarea name="message" rows="10" cols="50"></textarea><br/><p></p>
       <input type="submit" value="abschicken"></form>
    </body>
    </html>



    Und diesen Code habe ich in eine html-Seite kopiert in der ich noch ein Bild verlinkt habe.

    PHP-Code:
    [B]<?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

        <head>
            <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
            <meta name="generator" content="Adobe GoLive" />
            <title>---</title>
        </head>

        <body bgcolor="#ffffff">
            <p align="center"><img src="headcontent_kontakt.gif" alt="" height="72" width="286" border="0" /><br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <?php

    /**
     * Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
     * ansonsten wird 0 zurückgegeben.
     */
    function checkmail($mail) {
       return 
    preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]\.[a-z]++$#i'$mail);
    }

    // Empfänger
    $empf "alex1110@aol.com";

    // Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
    if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
       die(
    "Bitte einen Betreff eingeben!");

    // Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
    if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
       die(
    "Bitte eine Nachricht eingeben!");

    // Wenn Email ungültig ist, Fehler!
    if(!checkmail($_POST["email"]))
       die(
    "Bitte eine g&uuml;ltige Emailadresse angeben!");

    // mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
    mail($empfstr_replace("\n"""$_POST["betreff"]), str_replace("\n.""\n.."$_POST["message"]), $_POST["email"]);

    ?>
    <html>
    <body>
    <form action="sendmail.php" method="POST"><p></p><center>
       E-Mail: <input type="text" name="email"><br/><p></p>
       Betreff: <input type="text" name="betreff"><br/><p></p>
       <center>Nachricht:</center><p></p><center> <textarea name="message" rows="10" cols="50"></textarea><br/><p></p>
       <input type="submit" value="abschicken"></form>
    </body>
    </html>
    </body>
    </html>[/B]
     

  13. #13
    Avatar von split
    split split ist offline Mitglied Platin
    Registriert seit
    Jan 2004
    Ort
    München
    Beiträge
    574
    Wie die Fehlermeldung bereits sagt, liegt das Problem in Zeile 1!

    Der <?xml ... ?>-Tag wird als PHP interpretiert (wegen dem <?). Lass ihn weg und es geht!
     
    Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut

  14. #14
    Alex363 Tutorials.de Gastzugang
    Aha! Die erste Zeile habe ich raus genommen, und der Fehler ist weg - aber ein neuer kommt:
    Bitte eine gültige Emailadresse angeben!


    Komisch ich habe eine gültige Adresse angegeben.
     

  15. #15
    soyo soyo ist offline Mitglied Brillant
    Registriert seit
    Apr 2006
    Beiträge
    794
    Da deine Funktion zum überprüfen der Mail ja Integer zurück gibt und nicht Boolean, müsste es eigentlich heißen:
    PHP-Code:
    if(checkmail($_POST["email"]) == 0) {
      die(
    "Bitte eine g&uuml;ltige Emailadresse angeben!"); 

    Oder hab ich mal wieder einen Denkfehler?
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 03.10.09, 02:04
  2. mail() an Mailserver schicken
    Von Brölio im Forum PHP
    Antworten: 1
    Letzter Beitrag: 10.03.08, 16:37
  3. mail-daemon schicken
    Von grünes-huhn im Forum PHP
    Antworten: 5
    Letzter Beitrag: 15.12.05, 11:09
  4. Mit PHP+MySQL-automatische mail schicken
    Von salo im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 04.10.04, 15:19
  5. Ausgewertete Datei per mail schicken !
    Von SkyFighter im Forum PHP
    Antworten: 3
    Letzter Beitrag: 05.04.04, 16:57