Contactform

Status
Niet open voor verdere reacties.

wesselh

Gebruiker
Lid geworden
2 mrt 2007
Berichten
132
Hallo mensen, ik ben al ongeveer 2 maanden op zoek naar een WERKEND mail script.
Iedereen, maar dan ook IEDEREEN komt altijd aanzetten met de mail() functie..
Mijn probleem is dat het gewoon niet werkt.. altijd zegt ie van.. mail succes verzonden blablabla.. maar er komt gewoon niks :( Heeft niemand een idee hoe je zoiets wel laat werken want het lijkt wel alsof die mail() functie gewoon niet werkt.:confused:

Dankjewel:rolleyes:
 
ik ben geen ontwikkelaar maar maak zelf gebruik van www.formdesk.nl. Kost wel iets maar werkt echt super.
 
je hoeft alleen de email in te stellen





PHP:
<? 
// geef e-mail adres op van ontvanger 
$mail_ontv = "mijn@emailadres.nl";

// is niet 100% !!! 
function checkmail($mail) 
{ 
    $email_host = explode("@", $mail); 
    $email_host = $email_host['1']; 
    $email_resolved = gethostbyname($email_host); 

    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail)) 
        $valid = 1; 

    return $valid; 
} 

// als er niet op submit is gedrukt, of als er wel op is gedrukt maar niet alles ingevoerd is 
if (!$_POST['submit'] || $_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp'])) 
{ 
    if ($_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['mail']) || !$_POST['msggs'] || !$_POST['onderwerp']))   
    { 
        echo "Je bent je naam, e-mail adres, onderwerp of bericht vergeten in te vullen. Ook kan het zijn "; 
        echo "dat je een verkeerd e-mail adres hebt ingevuld.<p>"; 
    } 
      
    // form + tabel 
    echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"; 
    echo "<form method=\"POST\" ACTION=\"" . $_SERVER['PHP_SELF'] . "\">"; 
      
    // naam 
    echo "<tr><td>Naam:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>"; 
      
    // space 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
    // mail 
    echo "<tr><td>E-mail adres:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>"; 
      
    // space 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
    // mail 
    echo "<tr><td>Onderwerp:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>"; 
      
    // space 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
    // mail 
    echo "<tr><td>Bericht:</td></tr>"; 
    echo "<tr><td><TEXTAREA name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</TEXTAREA></td></tr>"; 
      
    // space 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
    // button 
    echo "<tr><td>&nbsp;</td></tr>"; 
    echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>"; 
      
    // sluit form + tabel 
    echo "</form>"; 
    echo "</table>"; 
} 
// versturen naar 
else 
{      
    // set datum 
    $datum = date("d.m.Y H:i"); 
      
    // set ip 
    $ip = $_SERVER['REMOTE_ADDR']; 
      
    $inhoud_mail = "===================================================\n"; 
    $inhoud_mail .= "Ingevulde contact formulier\n"; 
    $inhoud_mail .= "===================================================\n\n"; 
      
    $inhoud_mail .= "Naam: " . $_POST['naam'] . "\n"; 
    $inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n"; 
    $inhoud_mail .= "Bericht:\n"; 
    $inhoud_mail .= $_POST['msggs'] . "\n\n"; 
      
    $inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n\n"; 
      
    $inhoud_mail .= "===================================================\n\n"; 
    
    // -------------------- 
    // spambot protectie 
    // ------ 
    // van de tutorial: http://www.phphulp.nl/php/tutorials/10/340/ 
    // ------ 
    
    $headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
    
    $headers = stripslashes($headers);
    $headers = str_replace("\n", "", $headers); // Verwijder \n 
    $headers = str_replace("\r", "", $headers); // Verwijder \r 
    $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes 
    
    $_POST['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n 
    $_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r 
    $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes 
     
    mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers); 
     
    echo "<h1>Je e-mail is verstuurd</h1>";
    
    echo "<p>Bedankt voor het versturen van een e-mail. Je zult snel een antwoord "; 
    echo "krijgen indien dit nodig is.</p>"; 
     
    echo "<p>We nemen alles serieus en zullen vertrouwelijk omgaan met de informatie "; 
    echo "die we binnen krijgen. Je e-mail adres zal nooit aan derden worden verstrekt.</p>"; 
} 
?>
 
:confused: @marcelkip

Ik ben nog een leek op PHP gebied. met elk script dat ik plak krijg allemaal tekst die ik niet wil hebben.
bij sommige scrips moet je headers plaatsen dat snap ik ook niet helemaal.

Als ik jou php code in Dreamweaver in een php page plak (in code-tab natuurlijk) krijg ik in design-tab niets te zien en na F12 dit te zien op de site:


"; echo "
"; // naam echo "Naam:"; echo ""; // space echo " "; // mail echo "E-mail adres:"; echo ""; // space echo " "; // mail echo "Onderwerp:"; echo ""; // space echo " "; // mail echo "Bericht:"; echo "" . htmlentities($_POST['msggs']) . ""; // space echo " "; // button echo " "; echo ""; // sluit form + tabel echo "
"; echo ""; } // versturen naar else { // set datum $datum = date("d.m.Y H:i"); // set ip $ip = $_SERVER['REMOTE_ADDR']; $inhoud_mail = "===================================================\n"; $inhoud_mail .= "Ingevulde contact formulier\n"; $inhoud_mail .= "===================================================\n\n"; $inhoud_mail .= "Naam: " . $_POST['naam'] . "\n"; $inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n"; $inhoud_mail .= "Bericht:\n"; $inhoud_mail .= $_POST['msggs'] . "\n\n"; $inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n\n"; $inhoud_mail .= "===================================================\n\n"; // -------------------- // spambot protectie // ------ // van de tutorial: http://www.phphulp.nl/php/tutorials/10/340/ // ------ $headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">"; $headers = stripslashes($headers); $headers = str_replace("\n", "", $headers); // Verwijder \n $headers = str_replace("\r", "", $headers); // Verwijder \r $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes $_POST['onderwerp'] = str_replace("\n", "", $_POST['onderwerp']); // Verwijder \n $_POST['onderwerp'] = str_replace("\r", "", $_POST['onderwerp']); // Verwijder \r $_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers); echo "
Je e-mail is verstuurd
"; echo "
Bedankt voor het versturen van een e-mail. Je zult snel een antwoord "; echo "krijgen indien dit nodig is.

"; echo "
We nemen alles serieus en zullen vertrouwelijk omgaan met de informatie "; echo "die we binnen krijgen. Je e-mail adres zal nooit aan derden worden verstrekt.

"; } ?>
 
Laatst bewerkt:
Hallo mensen, ik ben al ongeveer 2 maanden op zoek naar een WERKEND mail script.
Iedereen, maar dan ook IEDEREEN komt altijd aanzetten met de mail() functie..
Mijn probleem is dat het gewoon niet werkt.. altijd zegt ie van.. mail succes verzonden blablabla.. maar er komt gewoon niks :( Heeft niemand een idee hoe je zoiets wel laat werken want het lijkt wel alsof die mail() functie gewoon niet werkt.:confused:

Dankjewel:rolleyes:

Je zal dit probleem toch in de mail() functie moeten zoeken.
PHP:
[mail function]
; For Win32 only.
SMTP = mail.jouw provider.nl  // gebruik hier de juiste instelling van jouw provider
    //  mischien moet jij smtp.provider.nl gebruiken 
   // deze instelling staat ook in jouw emailprogramma 
   // bij uitgaande mail 
smtp_port = 25

; For Win32 only.
;sendmail_from = emailadres   // zet hier het emailadres waar het naartoe moet 
// bijvoorbeeld wesselh.provider.nl

Als je de Apache server gebruikt, staat php.ini in de bin map van Apache
Ook in de map PHP staat het php.ini bestand.

Pas beide bestanden aan met de juiste gegevens.
 
Je kan ook een smtp class gebruiken ( als je een smtp server tot je beschikking hebt ).
Ik heb hier een goede:

Class:
PHP:
<?PHP

Error_Reporting(E_ALL);

Class SMTP_Client
{
    Var $From;                    // Bevat de e-mail adres van de gebruiker.
    Var $Debug;                    // Bevat een lijst met alle commando's die door het scipt zijn uitgevoerd.
    Var $Server;                // Bevat de naam van de server.
    Var $Connection;            // Bevat de connectie met de server.
    
    ## Deze functie is de constructor/deconstuctor, deze hoeft ook maar 1 keer te worden aangeroepen. ##
    Function Mail_Client($From = 'default@user.com', $Server = 'localhost')
    {
        $this->From       = Trim($From);
        $this->Server     = Trim($Server);

        $this->Debug      = Array( );
        $this->Connection = '';
    }
     ## Deze functie opent de socket met de server. ##
    Function Open_Socket( )
    {
        $this->Connection = @FSockopen($this->Server, 25, $ErrorCode, $ErrorString);

        If(!$this->Connection)
            Die("SMTP Error: ".$ErrorCode." ".$ErrorString);
        
        $this->Debug[]    = "<b>Opening SMTP Socket.</b>";
        $this->Debug[]    = FGets($this->Connection, 1024);
        
        FPuts($this->Connection, "HELO ".$this->Server."\r\n");
        
        $this->Debug[]    = "<b>Sending HELO to SMTP Server.</b>";
        $this->Debug[]    = FGets($this->Connection, 1024);
    }
    
    ## De functie sluit de socket met de server. ##
    Function Close_Socket( )
    {
        If(IsSet($this->Connection))
        {
            FPuts($this->Connection, "QUIT\r\n");
            FClose($this->Connection);

            $this->Debug[]    = '';
            $this->Connection = '';
        }
    }
    
    ## Met deze functie kun je berichten toevoegen. ##
    Function Message($To_Adress, $To_Name, $Subject, $Message, $Header = NULL)
    {
        If(IsSet($this->Connection))
        {
            $To_Adress = Trim($To_Adress);
            $To_Name   = Trim($To_Name);
            $Subject   = Trim($Subject);
            $Header    = Trim($Header);

            FPuts($this->Connection, "MAIL FROM: ".$this->From."\r\n");
            $this->Debug[] = "<b>Sending MAIL FROM (From Adress) to SMTP Server.</b>";
            $this->Debug[] = FGets($this->Connection, 1024);

            FPuts($this->Connection, "RCPT TO: ".$To_Adress."\r\n");
            $this->Debug[] = "<b>Sending RCPT TO (Reciever Adress) to SMTP Server.</b>";
            $this->Debug[] = FGets($this->Connection, 1024);

            FPuts($this->Connection, "DATA\r\n");
            $this->Debug[] = "<b>Sending DATA Command to SMTP Server.</b>";
            $this->Debug[] = FGets($this->Connection, 1024);

            FPuts($this->Connection, "Subject: ".$Subject."\r\n");
            FPuts($this->Connection, "To: ".$To_Name."\r\n");
            FPuts($this->Connection, $Header."\r\n");
            FPuts($this->Connection, $Message."\r\n.\r\n");
            $this->Debug[] = "<b>Sending Subject/to/header/message to SMTP Server.</b>";
            $this->Debug[] = FGets($this->Connection, 1024);
        }
    }

    ## En deze functie laat de debug list zien. ##
    Function Debug( )
    {
        Echo Implode("<br />", $this->Debug);
    }
}

?>

Hoe te gebruiken:
PHP:
<?php

$smtp = new SMTP_Client('VAN_EMAIL_ADRESS','SMTP_SERVER'); 
$smtp->Open_Socket( );
$smtp->Message("Pietje@precies.com", "Pietje", "Test", "Dit is het bericht"); // Bericht versturen, er kan als 5e parameter nog een header mee gestuurd worden.
$smtp->Close_Socket( );

?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan