Call to undefined method error
Ik was voor iemand een nieuwsbrief-scriptje aan het schrijven maar loop tegen een fout aan waar ik niet uit kom. Ik krijg in send.php namelijk een 'Call to undefined method'-error van PHPMailer. De exacte error is:
Code (php)
1
Fatal error: Call to undefined method PHPMailer::AddAdress() in /public/sites/***/newsletter/send.php on line 26
Dit is send.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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
<?php
// Classes en database laden
require_once('phpmailer/class.phpmailer.php');
require_once('phpmailer/language/phpmailer.lang-nl.php') ;
require_once('database.php');
//Gegevens uit de database halen
$query = "SELECT * FROM nieuwsbrief WHERE taal = 'Engels'";
$result = mysql_query($query) or die(mysql_error()); //Resultaat
$succes = 0;
$failed = 0;
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ //In een array proppen zo lang er gegevens zijn
$mail = new PHPMailer(); //Mail aanmaken
try {
$body = file_get_contents('newsletter.html'); //Inhoud
$mail->AddReplyTo("[email protected]","Creations of Nature"); //Afzender
$mail->SetFrom('[email protected]', 'Creations of Nature');
$mail->AddAdress($row['emailadres'], $row['naam']); //Ontvanger uit de array toevoegen
$mail->Subject = 'Newsletter - Creations of Nature';
$mail->AltBody = "Please visit http://www.creations-of-nature.com/engels/newsletter/newsletter.html to view the newsletter online";
$mail->MsgHTML($body); //Inhoud in de body schrijven
$mail->Send(); //Verzenden
$succes++; //Als hij gelukt is tellen we hem bij $succes
} catch (phpmailerException $e) { //Als het niet lukt
echo $e->errorMessage(); //Foutmelding
$failed++; //We tellen hem als mislukt
} catch (Exception $e) {
echo $e->getMessage();
$failed++;
}
}
//Statistieken weergeven
echo "Verzonden: $succes<br />Mislukt: $failed";
//Memory en databaseconnecte netjes afhandelen
mysql_free_result($result);
mysql_close($dbcon);
?>
// Classes en database laden
require_once('phpmailer/class.phpmailer.php');
require_once('phpmailer/language/phpmailer.lang-nl.php') ;
require_once('database.php');
//Gegevens uit de database halen
$query = "SELECT * FROM nieuwsbrief WHERE taal = 'Engels'";
$result = mysql_query($query) or die(mysql_error()); //Resultaat
$succes = 0;
$failed = 0;
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ //In een array proppen zo lang er gegevens zijn
$mail = new PHPMailer(); //Mail aanmaken
try {
$body = file_get_contents('newsletter.html'); //Inhoud
$mail->AddReplyTo("[email protected]","Creations of Nature"); //Afzender
$mail->SetFrom('[email protected]', 'Creations of Nature');
$mail->AddAdress($row['emailadres'], $row['naam']); //Ontvanger uit de array toevoegen
$mail->Subject = 'Newsletter - Creations of Nature';
$mail->AltBody = "Please visit http://www.creations-of-nature.com/engels/newsletter/newsletter.html to view the newsletter online";
$mail->MsgHTML($body); //Inhoud in de body schrijven
$mail->Send(); //Verzenden
$succes++; //Als hij gelukt is tellen we hem bij $succes
} catch (phpmailerException $e) { //Als het niet lukt
echo $e->errorMessage(); //Foutmelding
$failed++; //We tellen hem als mislukt
} catch (Exception $e) {
echo $e->getMessage();
$failed++;
}
}
//Statistieken weergeven
echo "Verzonden: $succes<br />Mislukt: $failed";
//Memory en databaseconnecte netjes afhandelen
mysql_free_result($result);
mysql_close($dbcon);
?>
En regel 26 is dus:
Waarom werkt dit niet, en hoe kan ik het wel laten werken?
Bedankt voor jullie hulp!
(P.S. Er gaat vast wel iemand zeggen dat niet de hele mail binnen de while-loop hoeft, maar de inhoud (newsletter.html) bevat ook enkele variabelen die afhankelijk zijn van de ontvanger, zoals een uitschrijflink ;))
address zal wel met dubbel d zijn
Dit is wel heel beschamend (A) Dank je ;)
- or die of or iets is geen foutafhandeling.
- Foutafhandeling ontbreekt.
- Geef nooit de mysql of php fout weer aan de gebruiker.
- Gebruik gewoon mysql_fetch_assoc.
- Er zal vast wel een batch methode zijn.
- Variabelen buiten quotes.
Toevoeging op 28/12/2010 17:28:09:
Nou ik hier toch een topic open heb: een ander vraagje. Ik roep nu die inhoud van de mail aan via file_get_contents('newsletter.php'), maar dan parsed hij natuurlijk niks. Hoe kan ik binnen die inhoud variabelen gebruiken zonder dat ik de hele inhoud van de mail in het script hoef te zetten (dus door gewoon de inhoud in newsletter.php te houden)? Want include() o.i.d. gaat niet werken neem ik aan...
Dus ik moet de variabalen binnen newsletter.php eerst verwerken, en vervolgens de inhoud in $body definieren ;)
Bedankt voor de hulp!
Toevoeging op 28/12/2010 19:17:44:
Heb hem al; niet aan de sprintf()-functie gedacht ;)