Contact formulier op website versturen met sendmail.exe

Status
Niet open voor verdere reacties.

DirkQ

Gebruiker
Lid geworden
31 jul 2005
Berichten
311
Ik heb een server thuis waar ik diverse kleine websites op host
Op die websites heb een e-mail contact formulier dat na jaren zonder problemen tot voor kort prima werkte met een sendmail.php script
Echter nu werkt dat script werkt niet meer, ik heb het ook op een website geprobeerd op een hosting provider en daar werkt het ook niet meer op.
(Mogelijk is de php versie waarvoor het is gemaakt te oud ?)
Ik ben dus aan het zoeken hoe het contact formulier weer werkend krijg.

Ik gebruik XAMPP en daarin zit sendmail.exe dat wil ik proberen te gebruiken.
Ik heb in het bij horende ini bestand de smtp server van mijn provider ingesteld
In PHP.ini heb ik bij de pad regel naar sendmail.exe de ; verwijderd.
Tot zover kon ik het via google wel vinden. maar hoe kan ik sendmail exe gebruiken vanuit een simpele HTML website? (zonder verder poespas) dat verwijst naar het niet meer werkende mail.php dat in de zelfde map als de website staat.
de verstuur regel in mijn mailform.html is momenteel :

<form action="mail.php" method="post" name="Berichttitel">

Ik heb bergen google pagina's door geworsteld waar wel staat hoe je sendmail.exe vanuit windows moet gebruiken maar daar heb ik niks aan.
Wie kan me hier mee helpen.
Is er een manier op Sendmail.exe direct te laten starten of kan dat met een klein PHP bestandje dat ik weer kan benaderen via mijn mailform?

(om goed bedoelde adviezen om Joomla of Wordpress te gaan gebruiken voor te zijn, HTML voldoet me prima en hier kan ik tenminste redelijk mee overweg)

Dirk
 
Laatst bewerkt:
Je kan ook gebruik maken van de SMTP van je provider via php.ini. Of gebruik gewoon phpMailer.
 
Ik wil ook gebruik maken van de SMTP server van mijn eigen provider, zoals dat altijd gewerkt heeft bij mijn eigen server hier thuis.
"gewoon" phpMailer ?
PHP is niet gewoon voor mij ik was al blij met het phpscript dat ik had maar wat nu niet meer werkt op de een of andere manier, en dat ligt niet aan mijn server want bij hostnet en hosting2go werkt het ook niet meer.
Ik heb twee dag niks anders gedaan dan op google zoeken en geen zinnig stukje informatie gevonden waar ik iets aan heb vanuit een gewoon html bestand..
En ik heb al helemaal niks kunnen vinden wat het script dat nu niet meer heb zou kunnen vervangen.
 
phpMailer is echt niet zo lastig. Er zijn zelf voorbeelden en een tutorial voor.

https://github.com/PHPMailer/PHPMailer/wiki/Tutorial

Ik zou zeggen: Probeer het eens, en niet meteen zeggen dat je het niet snapt. En als je het niet snapt, dan is een basiscursus PHP zeker wel handig.

Verder is HTML een opmaaktaal, en geen programmeertaal, dus alleen met HTML mailen kan gewoon niet.
 
Laatst bewerkt:
Die tutorials voor mij niet doorheen te komen en bieden geen oplossing voor mijn specifieke probleem
Ik ben gepensioneerd en kan mijn "overuren" beter besteden dan een computer taal leren alleen maar om een contact formuliertje in een html website werkend te maken.
En ik weet dat HTML een opmaak taal is en dat je er zelf niet mee kunt mailen , als je de eerste drie regels van mijn vraag had gelezen had je kunnen weten dat ik mijn html formulier aan een sendmail.php scrip heb gekoppeld dat er voor zorgt dat het wordt verstuurd.
Na 5 jaren zonder problemen werkt dat php script ineens niet meer , joost mag weten waarom. (ik heb het probleem ook met websites op Isp servers)
Waar ik om vraag, is er een pakketje ergens waarmee ik dat met kopiëren en plakken kan oplossen.
 
Laatst bewerkt:
Wat doet je sendmail.php nu dan? Die kan je anders toch wel aanpassen?
Laat die nu eens zien dan. En krijg je ook foutmeldingen?
 
Die sendmail doe helemaal niks, ik krijg een blanco pagina helemaal wit geen foutmelding niks , daar hoort te staan bericht is verstuurd.
En het wordt dus ook niet verstuurd.
Misschien is het een rommeltje maar dit scriptje heet jaren lang prima gewerkt..
PHP:
<html> 
<head> 
<title>Contact us</title>
<style type="text/css">
#main
{position: absolute;
top: 120px;
left: 120px;
width:450 px;
}
</style>
</head> 
<body> 

<?php
$mijn_eigen_adres = "xxx@xxxx.nl"; //Het hoofdadres voor de email.
$berichttitel     = "Message from mailform.";   //Titel van het bericht.
$cc                = "";
$cc1               = "";    //email CC 1, anders ""
$cc2               = "";    //email CC 2, anders ""

if ($cc1 <> "")      //Is het eerste CC adres ingevuld?
 {
     $cc = "<".$cc1.">";  //dan $CC is het eerste CC adres.
 }
if ($cc2 <>"")       //Is het tweede CC adres ook ingevuld?
 {
  $cc = $cc.",<".$cc2.">";  //dan $CC is het eerste plus het tweede tussen haakjes en gescheiden door komma.
 }
 
//Gegevens uit invulformulier.
$afzenderadres    = $_POST['email'];
$afzendernaam     = $_POST['name'];
$bericht          = $_POST['message'];

//Even kijken of de afzender een echt e-mail adres heeft ingevuld.
if (empty($afzenderadres) || !eregi("^[A-Za-z0-9\_.-]+@[A-Za-z0-9\_-]+.[A-Za-z0-9\_-]+.*",$afzenderadres))
 {
  echo "<div id="main">";
  echo "  <p>";
  echo "     <b>this is not a correct e-mail adress.</b><br>";
  echo "     <br>";
  echo "     <b><a href="contact.htm">please try again</a><br>";
  echo "     <br>";
  echo "  </p>";
  echo "</div>";
  echo "</body>";
  exit;
 }
if (empty($afzendernaam))
 {
  echo "<div id="main">";
  echo "  <p>";
  echo "     <b>You did not fill in your name !</b><br>";
  echo "     <br>";
  echo "     <b><a href="contact.htm">Please try again</a><br>";
  echo "     <br>";
  echo "  </p>";
  echo "</div>";
  echo "</body>";
  exit;
 }
En hier van had ik er 4 draaien met alleen andere e-mail adressen er in voor de websites waar ze voor bestemd zijn
 
Laatst bewerkt door een moderator:
Er zit geen eens een mailfunctie in :p
Of is dit de halve code?

PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
?>
Zet dit eens bovenaan. Dan zal je wel foutmeldingen moeten zien.
 
Laatst bewerkt:
Je hebt gelijk ik heb per ongeluk het verkeerde bestand gekopieerd dit moet helemaal zijn:

PHP:
<html>
<head>
<title>Contact Webmaster</title>
<style type="text/css">
#main
{position: absolute;
top: 120px;
left: 120px;
width:450 px;
}
</style>
</head>
<body>

<?php
$mijn_eigen_adres = "xxxxxxx@xxxxx.xxx"; //Het hoofdadres voor de email.
//$berichttitel     = "bericht van mail formulier.";   //Titel van het bericht.

$cc                = "xxxxx@xxxxx.xxx";    //Deze was nog niet gedefinieerd...:-)
$cc1               = "";    //email CC 1, anders ""
$cc2               = "";    //email CC 2, anders ""

if ($cc1 <> "")      //Is het eerste CC adres ingevuld?
 {
     $cc = "<".$cc1.">";  //dan $CC is het eerste CC adres.
 }
if ($cc2 <>"")       //Is het tweede CC adres ook ingevuld?
 {
  $cc = $cc.",<".$cc2.">";  //dan $CC is het eerste plus het tweede tussen haakjes en gescheiden door komma.
 }

//Gegevens uit invulformulier.
$afzenderadres    = $_POST['email'];
$afzendernaam     = $_POST['name'];
$bericht          = $_POST['message'];
$berichttitel     = $_POST['berichttitel'];

//Even kijken of de afzender een echt e-mail adres heeft ingevuld.
if (empty($afzenderadres) || !eregi("^[A-Za-z0-9\_.-]+@[A-Za-z0-9\_-]+.[A-Za-z0-9\_-]+.*",$afzenderadres))
 {
  echo "<div id="main">";
  echo "  <p>";
  echo "     <b>Dit is niet een e-mail adres.</b><br>";
  echo "     <br>";
  echo "     <b><a href="index.html">Probeer het opnieuw</a><br>";
  echo "     <br>";
  echo "  </p>";
  echo "</div>";
  echo "</body>";
  exit;
 }
if (empty($afzendernaam))
 {
  echo "<div id="main">";
  echo "  <p>";
  echo "     <b>U hebt geen naam in gevuld !</b><br>";
  echo "     <br>";
  echo "     <b><a href="index.html">Probeer het opnieuw</a><br>";
  echo "     <br>";
  echo "  </p>";
  echo "</div>";
  echo "</body>";
  exit;
 }
if (empty($berichttitel))
 {
  echo "<div id="main">";
  echo "  <p>";
  echo "     <b>U hebt geen onderwerp ingevuld!</b><br>";
  echo "     <br>";
  echo "     <b><a href="index.html">Probeer het opnieuw</a><br>";
  echo "     <br>";
  echo "  </p>";
  echo "</div>";
  echo "</body>";
  exit;
 }

// Fill in your e-mail address below
if ($cc<>"")
{
mail($mijn_eigen_adres,$berichttitel,$bericht,"Return-Path: <".$afzenderadres.">\r\nFrom: "".$afzendernaam."" <".$afzenderadres.">\r\nCC: ".$cc."\r\n");
} else
mail($mijn_eigen_adres,$berichttitel,$bericht,"Return-Path: <".$afzenderadres.">\r\nFrom: "".$afzendernaam."" <".$afzenderadres.">");

//mail($mijn_eigen_adres.";".$cc,$berichttitel,$bericht,"From: ".$afzendernaam." (" .$afzenderadres.")\r\n"."Reply-to: ".$afzenderadres);

// mail("info@mail.nl", "Bericht van contact pagina ABC", ($_POST['name'] ."\n". $_POST['email'] ."\n". $_POST['message']));

?>

<div id="main">
  <p>
<b><a href="index.html">Uw bericht is verstuurd klik op deze regel om terug te gaan naar de mailpagina</a><br>
     
  </p>

</div>
</body>

Dit word gestart met de [send] functie van het contactformulier in HTML : <form action="mail.php" method="post" name="Berichttitel">


Dit is de HTML code daar van dan heb je de hele zaak:

HTML:
<html>

<head>
<title>Contact</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body text="#000000" topmargin="0" leftmargin="0" background="../spacer.jpg">
 <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
    <tr>
      <td width="90%" </td>
    <p></p>
	<p></p>
	<p></p>
	<p></p>
	<p></p>
	<p></p>
	<p></p>
	<p>
    </tr>
  </table>

	<form action="mail.php" method="post">
  <div align="center">
	<table border="0" cellspacing="0" cellpadding="0" id="table1">
		<tr>
			<td>
			<p align="center"><font face="Arial"><big><b>Uw Naam:</b></big></font></td>
			<td width="246"><font face="Arial">
			<input type="text" name="name" size=40 border="1" ></font></td>
		</tr>
		<tr>
			<td>
			<p align="center"><font face="Arial"><big><b>Uw E-Mail:</b></big></font></td>
			<td width="246"><font face="Arial">
  <input type="text" name="email" size=40 border="1" ></font></td>
		</tr>
		<tr>
			<td>
			<p align="center"><font face="Arial"><big><b>Onderwerp:</b></big></font></td>
			<td width="246"><font face="Arial">
      <input type="text" name="berichttitel" size=40 border="1"></font></td>
		</tr>
	</table>
	</div>
	<p align="center"><font face="Arial">
  <textarea name="message" rows="23" cols="110"></textarea>&nbsp; 
  <br>
<br>
<input type="submit" value="Versturen" name="submit" style="background:#004040; font-size: 10pt; color: #C0C0C0; font-weight: bold; border-width: 1; border-color: #0080FF; margin-left: 0px">
  </font></p>
</form>
</body>

</html>

Het enige wat het doet is verzenden en dan een "Uw bericht is verstuurd klik op deze regel om terug te gaan naar de mailpagina" bericht waar je dan op kon klikken om weer terug te gaan.
En ik geloof dat dit script zelfs al 15 jaar heb gebruikt sinds mijn eerste website.
Ik heb pas gemerkt dat het niet meer werkte omdat ik het plotseling heel rustig kreeg in mijn mail .
Toen ben ik maar eens een paar rest mailtjes ben gaan versturen met op elke site waar ik dit formulier+ php script bij gebruikte het zelfde resultaat van een leeg scherm en niks was verstuurd.
 
Laatst bewerkt door een moderator:
Gelukkig hebben we ook de [P HP][/ PHP] tags om codes goed leesbaar te maken op het forum (zonder de spaties ertussen)

Zie ook mijn vorige post. Heb je die code al bovenaan gezet?
Zie je dan errors?
 
Laatst bewerkt:
Fatal error: Uncaught Error: Call to undefined function eregi() in /home/vhosts/xxxxxx.nl/subdomains/xxxxxxx/httpdocs/sendmail/mail.php:43 Stack trace: #0 {main} thrown in /home/vhosts/xxxxxxx.nl/subdomains/xxxxxxx/httpdocs/sendmail/mail.php on line 43


de xxx-jes staan voor het domein he ?
 
Juist, je bent op PHP7 overgestapt, en daar bestaat de eregi() functie niet meer. De vervanger is preg_match().

Maar dan zijn we er nog niet, want je huidige reguliere expressie (die 'lastige' tekenreeks met een hoop karakters) laat bepaalde mailadressen niet toe (bijv. pietjepuk+werk@gmail.com)
Dus gebruik i.p.v. een eigen gemaakte reguliere expressie (met preg_match()) de standaard filter_var() functie van PHP. Die laat alles toe, zoals het hoort, in plaats van dat je het wiel opnieuw uitvindt.

Zie hier de verschillen!
https://3v4l.org/qDoiC
 
Laatst bewerkt:
Ik heb je voorbeeld bekeken maar kan niet vinden waar ik dat neer moet zetten, en wat ik moet weg halen..
Zoals ik al zei ik weet niks van php, behoudens het invullen van een e-mail adres om het geschikt te maken voor elke website
 
Kijk eens naar je plek waar je nu je eregi(...............) functie staat.
Als je dit vervangt door:
Code:
!filter_var($afzenderadres, FILTER_VALIDATE_EMAIL)
dan ben je er!

Het is eigenlijk meer gewoon logisch kijken, dan 'het niet snappen', want als je wat probeert, dan leer je het juist begrijpen ;).
En die ! staat voor ONWAAR. Dus als er niet aan die voorwaarde wordt voldaan, dan zie je uiteindelijk de foutmelding dat de mail niet klopt.
Als je die ! weg zou laten, dan zou de functie kijken of het juist WAAR is.

Dit ter info! ;)
 
Laatst bewerkt:
Die plek waar eregi(...) staat in mijn script staat lijkt niet eens op jouw voorbeeld en dan ben ik er van af..
Ik ben er nu al 5 dagen mee aan het klooien en dat zijn dagen die ik beter had kunnen gebruiken om mensen te helpen die daarom proberen te vragen via een e-mailscript dat niet werkt..
Zoals ik al eerder zei , ik heb geen tijd van leven om er ook nog PHP bij te gaan leren alleen maar om e-mail op mijn websites weer werkend te krijgen.
Als ik 30 jaar jonger was geweest, Oké
Kun jij het niet voor me vervangen in het voorbeeld wat ik heb gestuurd ?
Of een link waar ik een werkend php7 script kan vinden ?
Daar ben ik het meest mee geholpen
 
Die plek waar eregi(...) staat in mijn script staat lijkt niet eens op jouw voorbeeld en dan ben ik er van af..
Daarom moet je die vervangen. Dat zei ik al in mijn vorige post op de tweede regel ;).
Het is enkel dit regeltje die je moet veranderen, en dan puur het deel na de || .
Code:
 if (empty($afzenderadres) || !eregi("^[A-Za-z0-9\_.-]+@[A-Za-z0-9\_-]+.[A-Za-z0-9\_-]+.*",$afzenderadres))


Probeer nou maar. :)
Niet bang zijn als het misgaat, want je zal zeker niet de server opblazen of andere problemen veroorzaken.
CTRL-Z is je vriend als het mis gaat, of maak backups van waar je mee bezig bent.

Gewoon logisch kijken! Je zal het vast wel in een oogopslag zien. Trust me! :)
 
Laatst bewerkt:
ik ben niet bang om servers op te blazen, ik wil het weer klaar hebben en ik krijg het niet voor elkaar.
Momenteel ben ik waarschuwingen op de websites aan het zetten dat de mail niet werkt , ik heb HULP nodig met een goed werkend script ik heb geen tijd om het zelf te leren
 
Hoe ver moet ik het presenteerblaadje nog aanreiken ;)?
95% heb je al! Het is eigenlijk alleen maar logisch lezen, en doen wat ik zeg.

Maar goed:

Code:
!eregi("^[A-Za-z0-9\_.-]+@[A-Za-z0-9\_-]+.[A-Za-z0-9\_-]+.*",$afzenderadres)
=>
Code:
!filter_var($afzenderadres, FILTER_VALIDATE_EMAIL)

Als het nou nog niet lukt, dan weet ik het écht niet meer... ;)
 
Laat maar,
Hoe vaak moet ik zeggen " ik heb geen idee waar ik dat moet zetten en wat ik moet vervangen"
Ik heb het telefoonnummer van een IT'er gekregen en die heeft me na een kwartier een kant en klaar zipje met benodigde bestanden gemaild die werken ik kan nu alles weer in orde maken.
Nogmaals ik heb geen tijd om dit uit te zoeken, je zult het goed bedoelen maar dit is leuk om te proberen als er geen tijdsdruk achter zit en tijd is wat ik niet heb.
 
Sorry, maar ik geef nu een code met waar je naar moet zoeken en wat je moet vervangen?
Dat is toch niet zo heel moeilijk meer?

Of verwacht je nu dat ik je hele code bij elkaar ga schrapen en alles daarin verwerken, en het als .zip naar je opsturen?
Laat het anders even rusten, ga even lekker avondeten, koken, en daarna nog eens kijken. Je moet je soms niet teveel focussen op iets, en dus moet je even je brein leegmaken.

Doe ik ook eens, zodat ik fris verder kan gaan.

Je kan nu wel leuk dat zip-je van je IT-er op elke site installeren, maar dan ben je vast nog langer bezig dan mijn code aan te passen.

En niet rot bedoeld: Maar als er tijdsdruk is, dan ga je toch niet direct naar een forum waar vrijwilligers zitten en daar zitten wachten, en in mindere mate druk nog proberen te leggen op diegene door te zeggen dat het spoed is.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan