Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Probleem met mail() function & html format

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer op de één of andere manier een heel simpele mail te versturen vanaf een contactformulier.
Ik heb dit al zeker 50x gedaan maar nu blijkt het maar niet te lukken, terwijl ik toch praktisch zeker ben dat ik niks anders heb gedaan of normaal...

Dit is mijn code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    $name           = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
    $firstname      = filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING); 
    $email          = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
    $info           = filter_input(INPUT_POST, 'info', FILTER_SANITIZE_STRING); 
    
    $message     = '<html><head>';
    $message    .= '<title>Vraag vanaf de website</title>';
    $message    .= '<style type="text/css">body {background-color: #ffffff; font-family: verdana;}hr {color: #333;}div {width: 800px; margin: 25px auto;}h1 {color: #FFC421; font-size: 17px;}p {color: 2a2a2a; font-size: 15px;}</style>';
    $message    .= '</head>';               
    $message    .= '<body>';            
    $message    .= '<div>';     
    $message    .= '<p><img src="imgs/tsc-logo.png"/></p>';     
    $message    .= '<hr />';                
    $message    .= '<h2 style="color: #FFC421;">Klant heeft een vraag gesteld via de website</h2>';                        
    $message    .= '<br />';                  
    $message    .= '<table style="width:800px">';              
    $message    .= '<tr><th style="width:250px"><h1>Gegevens klant:</h1></th><td></td></tr>';           
    $message    .= '<tr><th>Naam:</th><td>' . $name . '</td></tr>';         
    $message    .= '<tr><th>Voornaam:</th><td>' . $firstname . '</td></tr>';                       
    $message    .= '<tr><th>E-mail:</th><td>' . $email . '</td></tr>';                       
    $message    .= '<tr><th>Bericht:</th><td>' . $info . '</td></tr>';                       
    $message    .= '</table>';                       
    $message    .= '</div>';                
    $message    .= '</body></html>';                               
    
        $to      = 'iemand@telenet.be';
    $subject     = 'Vraag vanop de website';
    $headers         = 'MIME-Version: 1.0' . "\r\n";
    //$headers  .= 'Content-type:text/html;charset=UTF-8' . "\r\n";
        $headers        .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers    .= 'From: ' . $email . "\r\n";
    
    if (mail($to, $subject, $message, $headers)){
            $_SESSION['email'] = $email;
            header ('Location: index.php?pagina=send');
        } else {
            header ('Location: index.php?pagina=404');
        }


Als ik voor mijn Subject, Headers & To enkele quotes gebruik dan krijg ik de mail doorgestuurd maar als afzenden apache@hostbasket.com en de message ziet er zo uit:

code:
1
<html><head><title>Vraag vanaf de website</title><style type="text/css">body {background-color: #ffffff; font-family: verdana;}hr {color: #333;}div {width: 800px; margin: 25px auto;}h1 {color: #FFC421; font-size: 17px;}p {color: 2a2a2a; font-size: 15px;}</style></head><body><div><p><img src="imgs/tsc-logo.png"/></p><hr /><h2 style="color: #FFC421;">Klant heeft een vraag gesteld via de website</h2><br /><table style="width:800px"><tr><th style="width:250px"><h1>Gegevens klant:</h1></th><td></td></tr><tr><th>Naam:</th><td>iemand</td></tr><tr><th>Voornaam:</th><td>anders</td></tr><tr><th>E-mail:</th><td>iemand@telenet.be</td></tr><tr><th>Bericht:</th><td>vvvrreeee</td></tr></table></div></body></html>


Als ik dubbele quotes gebruik krijg ik iets heel anders als mail en dan is mijn afzender onbekend:

code:
1
2
3
4
5
6
7
Content-type: text/html; charset=iso-8859-1

From: iemand@telenet.be
Message-Id: <20140620123300.CD1B2A147@apache11.hostbasket.com>
Date: Fri, 20 Jun 2014 14:33:00 +0200 (CEST)

<html><head><title>Vraag vanaf de website</title><style type="text/css">body {background-color: #ffffff; font-family: verdana;}hr {color: #333;}div {width: 800px; margin: 25px auto;}h1 {color: #FFC421; font-size: 17px;}p {color: 2a2a2a; font-size: 15px;}</style></head><body><div><p><img src="imgs/tsc-logo.png"/></p><hr /><h2 style="color: #FFC421;">Klant heeft een vraag gesteld via de website</h2><br /><table style="width:800px"><tr><th style="width:250px"><h1>Gegevens klant:</h1></th><td></td></tr><tr><th>Naam:</th><td>iemand</td></tr><tr><th>Voornaam:</th><td>anders</td></tr><tr><th>E-mail:</th><td>iemand@telenet.be</td></tr><tr><th>Bericht:</th><td>blaa</td></tr></table></div></body></html>


Kan het zijn dat die hostfirma geen HTML content toelaat? Is dit praktisch mogelijk? Of zit mijn fout ergens anders?

Ps ik had dit ook gevonden op internet:
code:
1
2
3
4
5
    $to         ='iemand@telenet.be';
    $subject        ='Online betaling voltooid op ' . $date . ' Door ' .$name ;
    $headers        = "MIME-Version: 1.0" . "\r\n";
    $headers           .= "Content-type:text/html;charset=UTF-8" . "\r\n";
    $headers           .='From: ' . $webemail;


Dat is een mis van enkele en dubbele quotes maar ook dit lukt niet...

Bedankt!

  • Miyamoto
  • Registratie: Februari 2009
  • Laatst online: 20-11 21:15
Dus ga je zoeken wat het verschil is tussen enkele en dubbele quotes... tadaa: http://php.net/manual/en/language.types.string.php

ps. Je vind heel veel op internet, maar het is niet altijd even handig dat zomaar te copy-paste'en.


En los van het quote-verhaal: http://www.swiftmailer.org/

[ Voor 11% gewijzigd door Miyamoto op 20-06-2014 14:55 ]


Verwijderd

Topicstarter
Miyamoto schreef op vrijdag 20 juni 2014 @ 14:54:
Dus ga je zoeken wat het verschil is tussen enkele en dubbele quotes... tadaa: http://php.net/manual/en/language.types.string.php

ps. Je vind heel veel op internet, maar het is niet altijd even handig dat zomaar te copy-paste'en.


En los van het quote-verhaal: http://www.swiftmailer.org/
Ik denk toch te weten waar de major verschillen tussen enkele en dubbele quotes zit. Ik begrijp enkel niet hoe ik een veel gebruikte code plots niet werkende krijg (wel bij een andere host firma)

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 18-11 15:23
Verwijderd schreef op vrijdag 20 juni 2014 @ 15:07:
[...]
Ik denk toch te weten waar de major verschillen tussen enkele en dubbele quotes zit.
Sorry, maar blijkbaar niet. Je gebruikt nu \r\n in enkele quotes, dat gaat niet werken. Waarschijnlijk dat daarom de headers niet werken.

Full-stack webdeveloper in Groningen


Verwijderd

Topicstarter
Spinal schreef op vrijdag 20 juni 2014 @ 15:18:
[...]

Sorry, maar blijkbaar niet. Je gebruikt nu \r\n in enkele quotes, dat gaat niet werken. Waarschijnlijk dat daarom de headers niet werken.
Sorry ik had dit even vlug hier terug geplaatst en niet op gelet nu begrijp ik ook de reacties op die quotes... Zoals het nu bovenaan staat, zo denk ik wel dat het moet kloppen en zo lukt dit niet en krijg ik:

code:
1
2
3
4
5
6
7
Content-type: text/html; charset=iso-8859-1

From: iemand@telenet.be
Message-Id: <20140620132451.6EF6BA147@apache11.hostbasket.com>
Date: Fri, 20 Jun 2014 15:24:51 +0200 (CEST)

<html><head><title>Vraag vanaf de website</title><style type="text/css">body {background-color: #ffffff; font-family: verdana;}hr {color: #333;}div {width: 800px; margin: 25px auto;}h1 {color: #FFC421; font-size: 17px;}p {color: 2a2a2a; font-size: 15px;}</style></head><body><div><p><img src="imgs/tsc-logo.png"/></p><hr /><h2 style="color: #FFC421;">Klant heeft een vraag gesteld via de website</h2><br /><table style="width:800px"><tr><th style="width:250px"><h1>Gegevens klant:</h1></th><td></td></tr><tr><th>Naam:</th><td>iemand</td></tr><tr><th>Voornaam:</th><td>anders</td></tr><tr><th>E-mail:</th><td>iemand@telenet.be</td></tr><tr><th>Bericht:</th><td>ccccc</td></tr></table></div></body></html>

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 00:07
Er zit een lege regel in je header na de Content-type. Dit betekend einde header. Omdat je content-type ook in je bericht ziet, zit er waarschijnlijk ook een lege regel na de MIME-Version header welke daarvoor komt.

Verwijderd

Topicstarter
ThomasG schreef op vrijdag 20 juni 2014 @ 15:43:
Er zit een lege regel in je header na de Content-type. Dit betekend einde header. Omdat je content-type ook in je bericht ziet, zit er waarschijnlijk ook een lege regel na de MIME-Version header welke daarvoor komt.
Lijkt me toch echt bizar, ik had ook al zoiets terug gevonden via google maar ik heb al meerdere malen gecontroleerd met netbeans en zelfs met dreamweaver en ik zie nergens een regel teveel staan...

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:25

Creepy

Tactical Espionage Splatterer

Dan controleer je nu eerst de volledige broncode van je ontvangen e-mail, inclusief alle headers? Dan zie je direct of het zo is.

Wilde gok: de mail server van je hoster vervangt \n door \r\n zodat de \r\n in je code een \r\n\n wordt in je e-mail:

http://board.phpbuilder.c...ow-html-email-has-problem.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1