De body van een bericht in PHPMailer-5
Nu heb ik PHPMailer-5.2.8
Als ik nu net als voorheen het bericht in een string zet zoals
$Bericht='Dit is een proefbericht';
en dan bij
$mail->Body = $Bericht;
dan wordt dat door PHPMailer niet geaccepteerd.
Dan komt er een foutbericht dat luidt:
Undefined variable in C:\wamp\www\mijnweb\metov2.php on line 85.
Zoeken heeft mij niet opgeleverd waarom dit nu fout is.
Iemand die dat weet?
Lijkt mij geen bestand van PHPMailer. Is er niet iets anders fout gegaan? Anyway, wat staat er op regel 85 in het metov2.php?
Variabele gedefinieerd buiten de functie waar je hem gebruikt ?
$mail->Body = $Bericht;
en $Bericht='Dit is een proefbericht';
Dat staat uiteraard een aantal regels hoger.
Het is trouwens het enige waar PHPMailer over struikelt.
Bij eerdere foutjes werden die ook gemeld, maar dit is het enige dat over is.
PHJPMailer-5.2.8 heb ik een paar dagen terug gedownload van GitHub.
Uit een voorbeeld dat ik daar ook vond heb ik alle regels toegepast. Alleen bij stond
$mail->Body = 'hier de body van het bericht';
Toevoeging op 12/03/2015 18:22:31:
Pipo Clown op 12/03/2015 18:08:13:
typo in de variabelenaam ?
Variabele gedefinieerd buiten de functie waar je hem gebruikt ?
Variabele gedefinieerd buiten de functie waar je hem gebruikt ?
Het gaat hier om een eenmalige mailing dus ik heb er geen ingewikkelde toestand van gemaakt.
Alles staat in dat ene bestand, dus ook $Bericht= 'Dit is een proefbericht.';
en op het scherm wordt het goed afgedrukt.
kennelijk gaat $Bericht verloren tussen het definieren en jouw regel 85.
of om een of andere reden wordt $Bericht niet uitgevoerd, omdat er een if statement oid omheen staat?
Een typfout in de naam zou ook niet onmogelijk zijn.
kortom:
toon het stuk code vanaf iets voor $Bericht = tot aan regel 85 eens.
Toevoeging op 13/03/2015 08:13:09:
De code waar het om gaat staat hieronder.
Inmiddels heb ik gevonden dat i.p.v. $mail-> body = 'blablabla';
ook gebruikt kan worden
Dat werkt en de mail wordt verzonden door localhost.
Nu staat er dus op lijn 27:
$mail->msgHTML(file_get_contents('file.htm'), dirname('mijnweb'));
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
<?php
//hier bericht maken
$bericht='Beste vriend, \r\n'.' \r\n';
$bericht.='\r\n';
$bericht.='Je hebt mij bericht dat je".$optie." naar de reünie komt \r\n';
//$optie kan zijn 'met OV'of met 'eigen auto'of 'op andere manier'
$bericht.='Zodra het programma definitief is krijg je het toegestuurd.\r\n';
$bericht.='Wij hopen je op St.Juttemis bij het EYE te ontmoeten.\r\n';
$bericht.='\r\n';
$bericht.='Jan de Laatsteniet.\r\n';
require 'PHPMailer-5.2.8/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = 'mijndomein'; // Specify main and backup server
$mail->Port = 2525; // Set the SMTP port
$mail->SMTPAuth = false; // Enable SMTP authentication
$mail->Username = 'ik@mijndomein'; // SMTP username
$mail->Password = 'xxxxxxx'; // SMTP password
$mail->SMTPSecure = ''; // Enable encryption, 'ssl' also accepted
$mail->From = 'mij@mijndomein';
$mail->FromName = 'Jan';
$mail->wordwrap = 60;
$mail->IsHTML(true); // Set email format to HTML
$mail->Subject = 'over het vervoer';
//dit is de regel waar het op vast loopt
$mail->Body = $Bericht;
// en die wordt dus als Fatal Error gerapporteerd (Undefined variable)
$mail->AltBody = 'helaas geen HTML';
if(!$mail->Send())
{
echo 'Bericht kon niet worden verzonden';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
echo 'Bericht is verzonden';
}
?>
//hier bericht maken
$bericht='Beste vriend, \r\n'.' \r\n';
$bericht.='\r\n';
$bericht.='Je hebt mij bericht dat je".$optie." naar de reünie komt \r\n';
//$optie kan zijn 'met OV'of met 'eigen auto'of 'op andere manier'
$bericht.='Zodra het programma definitief is krijg je het toegestuurd.\r\n';
$bericht.='Wij hopen je op St.Juttemis bij het EYE te ontmoeten.\r\n';
$bericht.='\r\n';
$bericht.='Jan de Laatsteniet.\r\n';
require 'PHPMailer-5.2.8/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = 'mijndomein'; // Specify main and backup server
$mail->Port = 2525; // Set the SMTP port
$mail->SMTPAuth = false; // Enable SMTP authentication
$mail->Username = 'ik@mijndomein'; // SMTP username
$mail->Password = 'xxxxxxx'; // SMTP password
$mail->SMTPSecure = ''; // Enable encryption, 'ssl' also accepted
$mail->From = 'mij@mijndomein';
$mail->FromName = 'Jan';
$mail->wordwrap = 60;
$mail->IsHTML(true); // Set email format to HTML
$mail->Subject = 'over het vervoer';
//dit is de regel waar het op vast loopt
$mail->Body = $Bericht;
// en die wordt dus als Fatal Error gerapporteerd (Undefined variable)
$mail->AltBody = 'helaas geen HTML';
if(!$mail->Send())
{
echo 'Bericht kon niet worden verzonden';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
echo 'Bericht is verzonden';
}
?>
Dan doet zich wel het probleem voor dat ik de code waarmee dirname(' ') moet worden aangegeven niet goed kan krijgen.
Dus heb ik noodgedwongen de PHPMailer-code in dezelfde directory als file.htm staan.
Elke poging om file.htm in een andere directory te plaatsen mislukt met:
Warning: file_get_contents(contents.html) failed to open stream: No such file or directory in
C: wamp25\www\mijnweb\metov2.php on line xx
Het moet met PHPMailer ook best kunnen met $mail->body = “blablabla';
maar dan schijnt de inhoud van de body daar gewoon ingeschreven te moeten worden.
Dat lijkt mij eerlijk gezegd iets te achterlijk voor PHPMailer, maar hoe het dan wel moet met een in een string opgeborgen stuk tekst, daar ben ik nog niet achter. Steeds komt de foutmelding dat $Bericht een unidentified variable is.
Overigens vergat ik eerder te melden dat ik de hele mailprocedure aanvankelijk werkend had met Swift-4.2.2 en dat werkte van localhost wel meteen. Maar volgens mijn webhost kan het op de website niet met Swift maar wel met PHPMailer.
Sorry, het lukte me niet om het in en php-frame te plakken.
Toevoeging op 13/03/2015 08:23:45:
Het lukte dus toch.
lijn 27 is nu dus:
code(php
$mail->msgHTML(file_get_contents('file.htm'), dirname('mijnweb'));
Je begint met $bericht en gebruikt later $Bericht.
Gewijzigd op 13/03/2015 08:26:13 door Ger van Steenderen
wat ontzettend stom van me. Natuurlijk wist ik dat variabelen in php cse sensitive zijn en nu heb ik het toch dagenlang over het hoofd gezien. Bednakt.