Testen PHP mail-script

Status
Niet open voor verdere reacties.

apen

Gebruiker
Lid geworden
18 dec 2010
Berichten
336
Hallo allemaal,

Ik heb vrij weinig ervaring met PHP en ik wil een script testen. dit script stuurt een e-mail naar een bepaald adres.

Het onderwerp, de tekst en de verzender wordt ingevuld op een html pagina. de ontvanger is een vast adres. als ik het test met xampp wammp of vergelijkbare programma's weigerd het te werken ookal werkt het dan wel als deze online staat. dus heb ik zelf even een IIS server ingericht binnen mijn eigen netwerk, helaas ben ik er toen achter gekomen dat er niet wordt gemaild als je deze website alleen binnen je eigen netwerk bereikbaar maakt.

Het PHP script is overigens ook niet door mij gemaakt maar door de vorige persoon die de website begon. Het is aannemelijk dat deze rond 2004-2005 in wordpress is gemaakt.

Nu zou ik dit script graag testen maar ik heb geen idee hoe, weet iemand hoe het wel kan?


Html formulier:
HTML:
   <form id="contactformulier" name="contactformulier" method="post" action="contactformulier.php">
      <table width="265" cellspacing="0" cellpadding="5" border="0">
        <tr>
          <td>Naam:</td>
          <td><label>
            <input type="text" name="naam" id="naam" />
          </label></td>
        </tr>
        <tr>
          <td>Woonplaats:</td>
          <td><label>
            <input type="text" name="woonplaats" id="woonplaats" />
          </label></td>
        </tr>
        <tr>
          <td>Emailadres:</td>
          <td><label>
            <input type="text" name="email" id="email" />
          </label></td>
        </tr>
        <tr>
          <td>Bericht:</td>
          <td><label>
            <textarea name="bericht" id="bericht" rows="6" cols="80px"></textarea>
          </label></td>
        </tr>
        <tr>
          <td><input type="submit" name="verzenden" id="verzenden" value="verzenden" /></td>
        </tr>
        <tr>
          <td><input name="recipient" type="hidden" id="ontvanger" value="w4d-tharde@live.nl" /></td>
        </tr>
        <tr>
          <td><input name="subject" type="hidden" id="subject" value="reactie via website" /></td>
        </tr>
        <tr>
          <td><input name="redirect" type="hidden" id="redirect" value="bedankt.html" /></td>
        </tr>
		
      </table>
    </form>


PHP script:
PHP:
<?PHP

error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('track_errors', true);

function DoStripSlashes($fieldValue)  { 
 if ( get_magic_quotes_gpc() ) { 
  if (is_array($fieldValue) ) { 
   return array_map('DoStripSlashes', $fieldValue); 
  } else { 
   return stripslashes($fieldValue); 
  } 
 } else { 
  return $fieldValue; 
 } 
}

function FilterCChars($theString) {
 return preg_replace('/[\x00-\x1F]/', '', $theString);
}

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
 $clientIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
 $clientIP = $_SERVER['REMOTE_ADDR'];
}

$FTGvoornaam = DoStripSlashes( $_POST['naam'] );// zorg ervoor dat de namen tussen [ ] het zelfde zijn als die in je html formulier, anders kunnen ze niet worden gevonden.
$FTGpostcodewoonplaats = DoStripSlashes( $_POST['woonplaats'] );
$FTGemailadres = DoStripSlashes( $_POST['emailadres'] );
$FTGopmerkingen = DoStripSlashes( $_POST['bericht'] );
$FTGverzenden = DoStripSlashes( $_POST['verzenden'] );

$validationFailed = false;

if ($validationFailed === true) {

 $errorPage = '<html><head><title>Error</title></head><body>Het formulier is niet verstuurd. probeer het nogmaals.</body></html>';

 $errorPage = str_replace('<!--FIELDVALUE:voornaam-->', $FTGvoornaam, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:achternaam-->', $FTGachternaam, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:adres-->', $FTGadres, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:postcodewoonplaats-->', $FTGpostcodewoonplaats, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:telefoonnummer-->', $FTGtelefoonnummer, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:emailadres-->', $FTGemailadres, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:opmerkingen-->', $FTGopmerkingen, $errorPage);
 $errorPage = str_replace('<!--FIELDVALUE:verzenden-->', $FTGverzenden, $errorPage);

 $errorList = @implode("<br />\n", $FTGErrorMessage);
 $errorPage = str_replace('<!--VALIDATIONERROR-->', $errorList, $errorPage);

 echo $errorPage;

}

if ( $validationFailed === false ) {
  
 $emailSubject = FilterCChars("reactie via website");// hier plaats je het email onderwerp dat bovenin de mail komt als deze naar je toegestuurd wordt.
  
 $emailBody = "Voornaam : $FTGvoornaam\n"
  . "Achternaam : $FTGachternaam\n"
  . "Adres : $FTGadres\n"
  . "Postcode + woonplaats : $FTGpostcodewoonplaats\n"
  . "Telefoonnummer : $FTGtelefoonnummer\n"
  . "E-mailadres : $FTGemailadres\n"
  . "Opmerkingen : $FTGopmerkingen";
  $emailTo = '<jeroen.claassen@live.nl>';// hier vul je het adres in waar het formulier naar toe moet.
   
  $emailFrom = FilterCChars("www.valeouwe.com/public_html/prftst/contact.html");// hier vul je adres in waar vandaan op je site het formulier wordt gestuurd ( ik had vanaf opus 51
   
  $emailHeader = "From: $emailFrom\n"
   . "MIME-Version: 1.0\n"
   . "Content-type: text/plain; charset=\"ISO-8859-1\"\n"
   . "Content-transfer-encoding: 7bit\n";
   
  mail($emailTo, $emailSubject, $emailBody, $emailHeader);// deze variabelen worden teruggestuurd in je mail, deze kun je zelf uitbreiden, mits ze ook in je html formulier staat

$successPage = 'Uw bericht is verzonden, wij nemen zo spoedig mogelijk contact met u op';// zet hier de boodschap die terug

$successPage = str_replace('<!--FIELDVALUE:voornaam-->', $FTGvoornaam, $successPage);
$successPage = str_replace('<!--FIELDVALUE:achternaam-->', $FTGachternaam, $successPage);
$successPage = str_replace('<!--FIELDVALUE:adres-->', $FTGadres, $successPage);
$successPage = str_replace('<!--FIELDVALUE:postcodewoonplaats-->', $FTGpostcodewoonplaats, $successPage);
$successPage = str_replace('<!--FIELDVALUE:telefoonnummer-->', $FTGtelefoonnummer, $successPage);
$successPage = str_replace('<!--FIELDVALUE:emailadres-->', $FTGemailadres, $successPage);
$successPage = str_replace('<!--FIELDVALUE:opmerkingen-->', $FTGopmerkingen, $successPage);
$successPage = str_replace('<!--FIELDVALUE:verzenden-->', $FTGverzenden, $successPage);

echo $successPage;

}

?>
 
gebruik smtp-mail i.p.v. php-mail (instellen in php.ini)

Aangezien veel providers hier moeite mee hebben geef ik je het advies om een gmail acount aan te maken Wanneer je die nog niet hebt) en daar de SMTP gegevens van te gebruiken
 
heb het zo ingesteld:
Code:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.live.com
; http://php.net/smtp-port
smtp_port = 25
sendmail_from = ***@live.nl

ook maar de SMTP feature geinstalleerd en ingesteld maar krijg het nog niet aan de praat.
 
Laatst bewerkt door een moderator:
heb het nu zover gekregen dat ik deze error krijg:

Code:
Warning: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first in C:\Users\Administrator\Desktop\test\test.php on line 9

en dat met dit testscript:
PHP:
    <?php
    ini_set( 'display_errors', 1 );
    error_reporting( E_ALL );
    $from = "***@live.nl";
    $to = "***@live.nl";
    $subject = "PHP Mail Test script";
    $message = "This is a test to check the PHP Mail functionality";
    $headers = "From:" . $from;
    mail($to,$subject,$message, $headers);
    echo "Test email sent";
    ?>
 
Ik ken dat smtp-mailer niet en ik kan er niets over vinden op Internet/Google.
@gast0158 en/of TS: Kun je linken naar informatie & download van smtp-mailer ??

@TS: Blijkbaar is het mogelijk om (ook) m.b.v. phpmailer mail te versturen met TLS encrypte communicatie. Kijk naar deze link, waar gmail wordt gebruikt maar die analoog ook voor livemail/hotmail zou moeten werken (zelfs incl. poort 587 voor uitgaande mail ipv. 25, want die werkt ook bij smtp.live.com, je hoeft dus alleen servernamen, gebruikersnamen en wachtwoorden te vervangen).
Natuurlijk moet je dan weer phpmailer instellen in php.ini, de webservice herstarten daarna etc. Overigens is mij niet geheel duidelijk óf je inderdaad phpmailer gebruikte bij je startposting want ik begrijp dat ook phpmailer moet worden geïnstalleerd...

Verder meen ik te begrijpen dat je extension=php_openssl.dll actief moet hebben in je php.ini. Mogelijk is dat nu al het geval.

Tijs.
 
Laatst bewerkt:
De SMPTP mailer die ik heb geinstalleerd is een feature van windows server 2008 zelf,

het is juist niet de bedoeling om phpmailer te gaan gebruiken omdat er dan nieuwe code geschreven moet worden. In de website die vervangen gaat worden draaid het door mij aangegeven PHP script die op dit moment ook werkt, graag wil ik deze dus zelf ook kunnen testen in de nieuwe website wat dus nu niet lukt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan