[PHP] MAIL() de html van de pagina

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi, ik heb een script dat html kan mailen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
    $to = "xxx@xxx.xxx";
    $from = "xxx@xxx.xxx";
    $subject = "test";
    $message = <<<EOF

<html>
 test
</html>


EOF;

    $headers  = "From: $from\r\n";
    $headers .= "Content-type: text/html\r\n";

    $success = mail($to, $subject, $message, $headers);
    if ($success)
        echo "The email to $to from $from was successfully sent";
    else
        echo "An error occurred when sending the email to $to from $from";
?>


En voor zover doet ie het ook perfect... Alleen als ik php mee wil versturen gaat het fout, bijvoorbeeld een <? echo 'hoi'; ?> verstuurd hij niet, dan krijg je wel een mailtje .. maar die is blanco. Als ik dit wil versturen krijg ik zelfs een error :
code:
1
echo $_POST["test"];


Kortom, hoe kan ik dit verhelpen? Ook leek het me een optie om de hele html code die de pagina krijgt als hij geladen wordt (dus dat er geen php meer in zit) te versturen, alleen weet ik nog hoe..

als je iets weet, het is welkom

Frank

Acties:
  • 0 Henk 'm!

Verwijderd

in plaats van $message = <<<EOF kun je in jouw geval wellicht beter output buffering gebruiken

voorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
# *knip*
$subject = 'test';

ob_start ();
include 'mailtpl.php';
$message = ob_get_contents ();
ob_end_flush ();

$headers = "From: $from\r\n";
# *knip*

Je kunt zo in mailtpl.php je php code zetten. Je kunt uiteraard de regel met include vervangen door welke PHP code je maar wilt, maar ik vind dit netter.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hoi Cheatah,
Dank je voor de mail, met de mail template file ziet het beter uit ja. _/-\o_

Thanks,

Frank

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Om even compleet te maken: je kan ook in een here document een variabele laten interpoleren, dus zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
11
    $message = <<<EOF

<html>
 test
<h1>
$_POST["test"]
</h1>
</html>


EOF;


Dan hoef je dus niet met output buffers te klooien, wat ik persoonlijk een niet al te mooie oplossing vindt. :)

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi Banpei, nee als ik het zo doe krijg ik deze error :

code:
1
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'


Een nadeel met output buffering is dat ik hetgene dat ik in de mail wil hebben onder aan de pagina verschijnt .. en daarachter komt dan "The email to $to from $from was successfully sent". Hoe krijg ik dit weg?

FRank

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 30 juli 2004 @ 02:03:
<SNIP>

Een nadeel met output buffering is dat ik hetgene dat ik in de mail wil hebben onder aan de pagina verschijnt .. en daarachter komt dan "The email to $to from $from was successfully sent". Hoe krijg ik dit weg?
http://nl3.php.net/manual/nl/ref.outcontrol.php :?
http://nl3.php.net/manual/nl/function.ob-clean.php :? :?

[ Voor 3% gewijzigd door LuCarD op 30-07-2004 09:32 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Verwijderd schreef op 30 juli 2004 @ 02:03:
Hoi Banpei, nee als ik het zo doe krijg ik deze error :

code:
1
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'


Een nadeel met output buffering is dat ik hetgene dat ik in de mail wil hebben onder aan de pagina verschijnt .. en daarachter komt dan "The email to $to from $from was successfully sent". Hoe krijg ik dit weg?

FRank
Euh, oeps... :?

Volgens print zouden here documents binnen php toch echt aan variabele interpolatie moeten doen. :?
Misschien dat je dan $_POST["test"] assignen aan een scalar variabele. :/

[ Voor 4% gewijzigd door Banpei op 30-07-2004 09:45 ]

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • Spruit_elf
  • Registratie: Februari 2001
  • Laatst online: 10-08 01:09

Spruit_elf

Intentionally left blank

Banpei schreef op 30 juli 2004 @ 09:45:
[...]

Euh, oeps... :?

Volgens print zouden here documents binnen php toch echt aan variabele interpolatie moeten doen. :?
Misschien dat je dan $_POST["test"] assignen aan een scalar variabele. :/
PHP:
1
2
3
4
5
6
7
8
9
10
11
    $message = '

<html>
 test
<h1>
' . $_POST["test"] . '
</h1>
</html>


';

dit werkt igg bij mij maar dat eigelijk het zelfde als banzai alleen anders opgeschreven
het zou ook zonder concatenatie kunnen, gewoon alles tussen " zetten maar dat is iets langzamer als bovenstaande

[ Voor 26% gewijzigd door Spruit_elf op 30-07-2004 13:04 ]

Those who danced were thought to be quite insane by those who could not hear the music.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi jongens, die ob_clean() functie zou de uitkomst bieden.
Maar ik krijg nog steeds de output te zien .. Cheatah hoe kan ik deze gebruiken als ik me output buffering wil werken?

thanx Frank

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zie dat nu in mijn voorbeeld dat ik ob_end_flush() heb gebruikt in plaats van ob_end_clean()
Als je dat verandert dan zou het moeten werken.
Pagina: 1