[PHP] mailfunctie foutmelding

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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:
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?

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Wat jij doet:
1. je gebruikt de functie sendmail
2. je maakt de functie sendmail aan
Dat is zoiets als eerst je editor afsluiten & dan beginnen te coden ;)

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Met dat stuk SendMail() maak ik toch alleen de variabelen aan die de functie daarna gebruikt?

In een eigen document werkt het namelijk wel... dus zonder de gegevens op te slaan in een database, de code staat er dan exact hetzelfde in en werkt perfect.

Daar loop ik ook met name op vast, een optie is natuurlijk de redirect pagina naar een aparte mailpagina te sturen maar ik ben dwars en wil graag weten waarom het in een aparte pagina wel werkt en bij een bestaande pagina inbouwen niet.

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

waarom die 't in een eigen doc wel doet snap ik niet eigenlijk, maar wat ik zie:
line #08-12 = functie gebruiken
line #14-79 = functie defineren

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat stuk SendMail() (#08-12) heb ik verplaatst, direct na het definieren van de functie, helaas werkt dit ook niet, het bericht wordt dan niet verstuurd.

Ik heb ook geprobeerd direct de gegevens zonder SendMail() er omheen op te nemen, dat gaat ook niet, ook dan komt er geen mail aan op de bestemming.

Anders zal ik in verband met een te kort aan tijd voorlopig de niet nette oplossing van een apart mailbestand moeten gebruiken en me er in moeten verdiepen waarom het niet gewoon werkt als ik iets meer tijd heb |:(

[ Voor 27% gewijzigd door Verwijderd op 23-03-2004 15:04 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Include je de declaratie van de functie zelf eigenlijk wel?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb geen specifieke declaraties uitgevoerd voor deze functie, zoals al aangegeven lijkt het mij ook geen nut te hebben dit te doen omdat hij werkt als je hem als los bestand gebruikt.

Het is en blijft voor mij een vraag wat er anders is tussen het los gebruiken van het script en het plaatsen van dit script in een bestaand script.

Wellicht dat ik er morgen anders tegenaan kijk... voor vandaag geef ik het iig even op.

Update:

Ik heb nu de mail functie in een aparte pagina staan en deze roep ik aan nadat de gegevens zijn opgeslagen.

Het werkt zo prima maar raar blijft het dat dit niet werkt als het op dezelfde pagina staat. |:(

[ Voor 21% gewijzigd door Verwijderd op 24-03-2004 18:47 . Reden: Status update ]

Pagina: 1