Contact form komt niet goed in hotmail
Ik heb een simpel contactformulier maar als ik hem naar mijn hotmail laat verzenden krijg ik bij het openen eerst het bericht "This message has been blocked for your safety. "
Zit hem dat in de scripting of in hotmail? ik hoorde al van iemand dat hotmail waarschijnlijk bepaalde headers verwacht die niet worden verstuurd.
Hieronder het script; wat doe ik fout?
<html>
<body>
Code (php)
Code (php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<? ;}
else{
$headers = "From: ".$_POST['naam']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['naam']." <".$_POST['email'].">\r\n";
//create body
//het bericht
$body.= "Naam: ";
$body.= $_POST['naam'] ."\r\n";
$body.= "Email: ";
$body.= $_POST['email'] ."\r\n";
mail($email,"Contact: ".$_POST['naam'],$body,$headers);
print 'bedankt';
} }
else
{
?>
else{
$headers = "From: ".$_POST['naam']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['naam']." <".$_POST['email'].">\r\n";
//create body
//het bericht
$body.= "Naam: ";
$body.= $_POST['naam'] ."\r\n";
$body.= "Email: ";
$body.= $_POST['email'] ."\r\n";
mail($email,"Contact: ".$_POST['naam'],$body,$headers);
print 'bedankt';
} }
else
{
?>
<input name="form" type="hidden" value="" />
<table>
<tr>
<td width="195">Naam: <i>*</i></td>
<td width="401"> <input type="tekst"name="naam" id="q"> </td></tr>
<tr>
<td>E-mail adres: <i>*</i></td>
<td><input type="tekst"name="email" id="q"></td>
</tr>
<tr><td></td><td> <p> <input type="submit" value="Versturen" onclick="" id="button" /></p></td></tr>
</table>
</form>
</body>
</html>
alvast bedankt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$to = "someone <some@email>";
$subject = "You've got mail!";
$message = "Hello someone.";
$headers = "From: [email protected]\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "Reply-To: me <[email protected]>\n";
$headers .= "X-Priority: 1\n";
$headers .= "X-MSmail-Priority: High\n";
$headers .= "X-mailer: My mailer";
mail ($to, $subject, $message, $headers)
?>
$to = "someone <some@email>";
$subject = "You've got mail!";
$message = "Hello someone.";
$headers = "From: [email protected]\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "Reply-To: me <[email protected]>\n";
$headers .= "X-Priority: 1\n";
$headers .= "X-MSmail-Priority: High\n";
$headers .= "X-mailer: My mailer";
mail ($to, $subject, $message, $headers)
?>
Het kan uiteraard zijn dat Hotmail denkt dat jouw bericht SPAM zijn vanwege de inhoud van jouw bericht, maar ik zou beginnen met het uitbreiden van jouw headers.
Uiteraard wanneer je phpmailer of swiftmailer gebruikt heb je hier geen last van.
EDIT (TIP):
Verwerk de mail niet midden in de <body> van de pagina maar plaats de verwerking ervan helemaal bovenaan de pagina (dus nog boven de header en voor al het andere). Alle foutmeldingen kun je dan in een array() (bv. $errMess) plaatsen en op een willekeurig plaats op de pagina tonen. Je zou het ook in een functie/classe kunnen zetten en het vervolgens kunnen aanroepen, maar dat gaat wellicht iets te ver voor nu?
Gewijzigd op 01/01/1970 01:00:00 door The Ultimate
ik heb uitgevonden dat het probleem zit in deze 2 regels;
Code (php)
1
2
3
4
2
3
4
<?
$headers = "From: ".$_POST['naam']." <".$_POST['email'].">\n";
$headers .= "Reply-To: ".$_POST['naam']." <".$_POST['email'].">\n";
?>
$headers = "From: ".$_POST['naam']." <".$_POST['email'].">\n";
$headers .= "Reply-To: ".$_POST['naam']." <".$_POST['email'].">\n";
?>
Toch zou ik wel graag willen dat hij de naam en mail laat zien als afzender. is daar nog een mogelijkheid toe?
Robbert schreef op 01.10.2009 10:13:
bedankt,
Toch zou ik wel graag willen dat hij de naam en mail laat zien als afzender. is daar nog een mogelijkheid toe?
Toch zou ik wel graag willen dat hij de naam en mail laat zien als afzender. is daar nog een mogelijkheid toe?
Wat bedoel je?
ik heb phpmailer en swift mailer beide gedownload, maar dat zijn hele grote scripts. ik wil echter een zeer simpel contactscript.. moet het dan zo uitgebreid als swift of phpmailer?
www.ditismijnsite.nl dient je from adres te eindigen op @ditismijnsite.nl
Controleer in eerste instantie of het fromadres ook daadwerkelijk van het domein komt waar je vanaf verzend, dit is de meestvoorkomende fout in deze situatie, dus als je test vanaf Maar ik wil dus graag het volgende dat hij binnen komt met het emailadres dat is opgegeven in het formulier(dus niet die van de desbetreffende server)
en dat hij bij het replyen replied naar het opgegeven emailadres:
hoe kan ik zoiets voor elkaar krijgen?
Robbert schreef op 01.10.2009 15:11:
heb het voor elkaar, bedankt allemaal!
Hoe dan? Graag ook even hier vermelden.
nou heb het in zoverre voor elkaar dat als ik bij de from; de eigen domeinnaam neerzet dat het dan lukt.. als ik de naam en mail van diegene die het formulier verzonden heeft laat staan dan gaat het fout.
Quote:
Wat gaat er fout?als ik de naam en mail van diegene die het formulier verzonden heeft laat staan dan gaat het fout.
Misschien moet je ook bedenken dat je < moet escapen binnen die dingen. Dus:
$headers = 'From: "'.str_replace('"', '""', $from).'" <'.$fromMail.'>';
Maar wat voor veld is die $_POST['naam']. Staan daar soms rare tekens in (en dan bedoel ik tekens die niet binnen ASCII-set vallen)? Want dan zul je weer voor UTF-8 o.i.d. moeten gaan escapen :)
Robbert schreef op 01.10.2009 15:22:
nou heb het in zoverre voor elkaar dat als ik bij de from; de eigen domeinnaam neerzet dat het dan lukt.. als ik de naam en mail van diegene die het formulier verzonden heeft laat staan dan gaat het fout.
Dat komt door SPF.
SanThe schreef op 01.10.2009 15:49:
Dat komt door SPF.
Robbert schreef op 01.10.2009 15:22:
nou heb het in zoverre voor elkaar dat als ik bij de from; de eigen domeinnaam neerzet dat het dan lukt.. als ik de naam en mail van diegene die het formulier verzonden heeft laat staan dan gaat het fout.
Dat komt door SPF.
oke en dat valt niet te omzeilen?
Quote:
Dan wil ik nog wel eens weten hoe het zit met al die sites die niet hun eigen domein gebruiken, maar desondanks wel mail versturen van hun domein. Denk hierbij bijvoorbeeld aan de phpBB-fora e.d.Nee, gelukkig niet. Dat is een anti-spam methode en we houden niet van spammers.
De SPF check wordt nog lang niet door ieder domain toegepast. Bij heel veel DNS servers ontbreekt het benodigde record nog.
Yep, maar dat lijkt mij toch niet te gelden voor algemeen bekende domeinen als gmail en hotmail... En die komen bij mij (gmail) ook altijd netjes binnen. Ik vraag me dus af of gmail er gebruik van maakt of hoe wachterdicht het systeem is :)