Ik ben nog niet geheel thuis in PHP, met behulp van PHP.net ben ik een functie aan het samenstellen maar loop vast op een raar probleem.
Op basis van een in de commentaren gegeven script ben ik begonnen.
Op mijn website kunnen mensen zich registreren, om het e-mail adres te controleren moet een e-mail opgesteld worden nadat de gegevens zijn opgeslagen waarin een link staat om het adres te bevestigen.
De code:
Het probleem:
Als ik de onderstaande code in een php bestand plaats werkt hij prima, het bericht komt aan en alles werkt naar behoren.
Het probleem is dat als ik deze code in mijn bestaande pagina plaats, voor een redirect en na de code om de gegevens zijn op te slaan in de database ik een foutmelding krijg op regel 9, in het stuk:
De foutmelding geeft aan dat ik een functie (SendMail) aanroep die niet bestaat (undefined).
Waarom werkt het nou wel als ik hem alleen in een php bestand zet en niet als ik hem in een andere pagina opneem?
Op basis van een in de commentaren gegeven script ben ik begonnen.
Op mijn website kunnen mensen zich registreren, om het e-mail adres te controleren moet een e-mail opgesteld worden nadat de gegevens zijn opgeslagen waarin een link staat om het adres te bevestigen.
De 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| // hier start de mailfunctie $jouwadres = $_POST['cntctEmail']; $unicode = $_POST['morex']; $TEXT="De tekst met het linkje"; $HTML="<font color=red>De tekst in HTML met het linkje</font>"; $ATTM=array("",""); SendMail( $mijnadres,"Registratiemodule", //sender $jouwadres,"Naam van de ontvanger", //recipient "Bevestiging e-mail adres en registratie", //subject $TEXT,$HTML,$ATTM); //body and attachment(s) function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html,$AttmFiles){ $OB="----=_OuterBoundary_000"; $IB="----=_InnerBoundery_001"; $Html=$Html?$Html:preg_replace("/\n/","<br>",$Text) or die("neither text nor html part present."); $Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail."; $From or die("sender address missing"); $To or die("recipient address missing"); $headers ="MIME-Version: 1.0\r\n"; $headers.="From: ".$FromName." <".$From.">\n"; $headers.="To: ".$ToName." <".$To.">\n"; $headers.="Reply-To: ".$FromName." <".$From.">\n"; $headers.="X-Priority: 1\n"; $headers.="X-MSMail-Priority: High\n"; $headers.="X-Mailer: My PHP Mailer\n"; $headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n"; //Messages start with text/html alternatives in OB $Msg ="This is a multi-part message in MIME format.\n"; $Msg.="\n--".$OB."\n"; $Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n"; //plaintext section $Msg.="\n--".$IB."\n"; $Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n"; $Msg.="Content-Transfer-Encoding: quoted-printable\n\n"; // plaintext goes here $Msg.=$Text."\n\n"; // html section $Msg.="\n--".$IB."\n"; $Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n"; $Msg.="Content-Transfer-Encoding: base64\n\n"; // html goes here $Msg.=chunk_split(base64_encode($Html))."\n\n"; // end of IB $Msg.="\n--".$IB."--\n"; // attachments if($AttmFiles){ foreach($AttmFiles as $AttmFile){ $patharray = explode ("/", $AttmFile); $FileName=$patharray[count($patharray)-1]; $Msg.= "\n--".$OB."\n"; $Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n"; $Msg.="Content-Transfer-Encoding: base64\n"; $Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n"; //file goes here $fd=fopen ($AttmFile, "r"); $FileContent=fread($fd,filesize($AttmFile)); fclose ($fd); $FileContent=chunk_split(base64_encode($FileContent)); $Msg.=$FileContent; $Msg.="\n\n"; } } //message ends $Msg.="\n--".$OB."--\n"; mail($To,$Subject,$Msg,$headers); //syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>"); } // hier eindigt de mailing |
Het probleem:
Als ik de onderstaande code in een php bestand plaats werkt hij prima, het bericht komt aan en alles werkt naar behoren.
Het probleem is dat als ik deze code in mijn bestaande pagina plaats, voor een redirect en na de code om de gegevens zijn op te slaan in de database ik een foutmelding krijg op regel 9, in het stuk:
PHP:
1
2
3
4
5
| SendMail( $mijnadres,"Registratiemodule", //sender $jouwadres,"Naam van de ontvanger", //recipient "Bevestiging e-mail adres en registratie", //subject $TEXT,$HTML,$ATTM); //body and attachment(s) |
De foutmelding geeft aan dat ik een functie (SendMail) aanroep die niet bestaat (undefined).
Waarom werkt het nou wel als ik hem alleen in een php bestand zet en niet als ik hem in een andere pagina opneem?