Phpmailer
ik heb de phpmailer 'geïnstalleerd' voor php 5.
http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/PHPMailer%20v5.1/PHPMailer_v5.1.zip/download
Nu zit ik met het volgende probleem.
Ik moet SMTP server invullen, ook de SMTP gebruikersnaam en wachtwoord.
Ik verstuur mijn email via een hotmail adres.
Ik zou niet meteen weten wat ik er moet invullen.
Op http://www.pfz.nl/wiki/phpmailer/ staat er een installatiebestand.
Ik heb dus een test.php aangemaakt en met de volgende gegevens erin:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
require_once(class.phpmailer.php');
$mailer = new PHPMailer();
$mailer->Subject = 'Voorbeeldje';
$mailer->Body = 'Dit is het bericht.';
$mailer->AddAddress('email@eigen.nl', 'footje bar');
// $mailer->AddCC('foobar2@foobar.com', 'footje bar nr 2');
// $mailer->AddBCC('foobar3@foobar.net', 'footje bar nr 3');
$mailer->Send();
?>
require_once(class.phpmailer.php');
$mailer = new PHPMailer();
$mailer->Subject = 'Voorbeeldje';
$mailer->Body = 'Dit is het bericht.';
$mailer->AddAddress('email@eigen.nl', 'footje bar');
// $mailer->AddCC('foobar2@foobar.com', 'footje bar nr 2');
// $mailer->AddBCC('foobar3@foobar.net', 'footje bar nr 3');
$mailer->Send();
?>
Normaal gezien zou ik een bericht moeten ontvangen hebben, maar ik ontvang niets.
Moet ik nog iets veranderen?
Kijk naar kleuren (op regel 2).
Gebruik ook phpmailer en heb geen smtp gegevens ingevuld. Werkt prima.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
// Phpmailer
require_once('phpmailer/class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = 'testbericht';
$body = preg_replace("['\']",'',$body);
$mail->SetFrom('[email protected]', 'afzender');
$mail->AddAddress("[email protected]","persoon 1");
$mail->addCC("[email protected]","persoon 2");
$mail->Subject = 'onderwerp e-mail';
$mail->AltBody = "Om deze tekst te kunnen lezen, moet uw mailprogramma HTML ondersteunen."; // optional, comment out and test
$mail->MsgHTML($body);
$mail->Send();
$mail->ClearAddresses(); // mailadres schonen
// End PHPmailer
require_once('phpmailer/class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = 'testbericht';
$body = preg_replace("['\']",'',$body);
$mail->SetFrom('[email protected]', 'afzender');
$mail->AddAddress("[email protected]","persoon 1");
$mail->addCC("[email protected]","persoon 2");
$mail->Subject = 'onderwerp e-mail';
$mail->AltBody = "Om deze tekst te kunnen lezen, moet uw mailprogramma HTML ondersteunen."; // optional, comment out and test
$mail->MsgHTML($body);
$mail->Send();
$mail->ClearAddresses(); // mailadres schonen
// End PHPmailer
Gewijzigd op 06/05/2012 14:23:16 door Obelix Idefix
Ik had nu dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
require_once('class.phpmailer.php');
$mailer = new PHPMailer();
$mailer->Subject = 'Voorbeeldje';
$mailer->Body = 'Dit is het bericht.';
$mailer->AddAddress('[email protected]', 'footje bar');
//$mailer->AddCC('[email protected]', 'footje bar nr 2');
//$mailer->AddBCC('[email protected], 'footje bar nr 3');
$mailer->Send();
?>
require_once('class.phpmailer.php');
$mailer = new PHPMailer();
$mailer->Subject = 'Voorbeeldje';
$mailer->Body = 'Dit is het bericht.';
$mailer->AddAddress('[email protected]', 'footje bar');
//$mailer->AddCC('[email protected]', 'footje bar nr 2');
//$mailer->AddBCC('[email protected], 'footje bar nr 3');
$mailer->Send();
?>
Nog krijg ik geen mail.
Ik werk met telenet.be
De provider kan niet echt een probleem zijn
Wat als je mijn code gebruikt (en daarin nog wel even een juist mailadres zet)?
wat je zou kunnen doen is "alleen voor development" een Gmail account gebruiken.
Je gebruikt dan eigenlijk de SMTP server van Google.
Maak b.v. een functie in de class PHPMailer;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
function IsGoogleMail() {
$this->IsSMTP();
$this->SMTPAuth = true;
$this->SMTPSecure = "ssl";
$this->Host = "smtp.gmail.com";
$this->Port = 465;
$this->Username = "[email protected]";
$this->Password = "foobarbaz";
}
?>
function IsGoogleMail() {
$this->IsSMTP();
$this->SMTPAuth = true;
$this->SMTPSecure = "ssl";
$this->Host = "smtp.gmail.com";
$this->Port = 465;
$this->Username = "[email protected]";
$this->Password = "foobarbaz";
}
?>
Voorbeeld verzend-code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$email = new PHPMailer;
$email->From('[email protected]', 'Harry');
$email->AddAddress('[email protected]', 'Sally');
$email->Subject = 'Test title';
$email->Body = 'Test body';
$email->IsGoogleMail();
if (!$email->Send()) {
printf("\nKon geen e-mail verzonden. (omdat: %s)", $email->ErrorInfo);
exit;
}
?>
$email = new PHPMailer;
$email->From('[email protected]', 'Harry');
$email->AddAddress('[email protected]', 'Sally');
$email->Subject = 'Test title';
$email->Body = 'Test body';
$email->IsGoogleMail();
if (!$email->Send()) {
printf("\nKon geen e-mail verzonden. (omdat: %s)", $email->ErrorInfo);
exit;
}
?>
Ik hoop dat je er wat mee kunt, suc!
@ Obelix en Idefix, hoe ziet jouw code eruit?
@ Twan van der Poel, moet ik dan gewoon een gmail account maken? Zonder iets erbij?
Alvast bedankt!
Ja, correct.
Maar let wel: dit geen duurzame oplossing voor een productie-omgeving!
Groet,
Ik kan die SMTP niet echt gebruiken dus.
Het is gewoon een oefensite die nog niet online staat en ik zo kan kijken of alles er goed uit ziet, in alle browser, google chorme, opera, IE 7, IE8 ...
De meeste webboeren hebben wel een mogelijkheid om e-mail te verzenden, waar host je?
Maar ik heb even die 2 dingen aangepast.
De functie aangepast, mijn gmail emailadres eringeplaatst en wachtwoord van me gmail eringeplaats.
Van de verzendcode krijg ik een error:
$email->From('[email protected]', 'Harry');
Namelijk:
Fatal error: Call to undefined method PHPMailer::From() in /home/a5991492/public_html/classes/test.php on line 5
Call to undefined method PHPMailer::IsGoogleMail()
Ik heb die in de class van de phpmailer helemaal ondeaan gestoken.
Heb niet veel tijd om de fout te zoeken.
die functie die je geplakt hebt moet niet helemaal onderaan het document geplakt worden, maar in de class PHPMailer.
We hebben tenslotte een nieuwe "methode" voor de "class" PHPMailer geschreven.
Dit betekend dat je de functie moet plakken voordat de laatste acculade de class sluit. (Dus voor de laatste acculade plakken).
Groet,
Gewijzigd op 06/05/2012 19:27:04 door Toine vd P
Ik werk niet veel met classes.
Nu vindt hij de functie wel.
Dit is de volgende error nu:
SMTP Error: Could not connect to SMTP host. Kon geen e-mail verzonden. (omdat: SMTP Error: Could not connect to SMTP host.)
Waaran kan dit liggen?
SMTP host weet ik ook wel maar snap niet waarom.
ik denk dat je de extensie openssl niet hebt aanstaan.
Ik zal een kleine uitleg geven:
Maak een PHP bestand met de volgende inhoud:
Zoek op "Loaded configuration file" o.i.d. (staat bijna bovenaan).
Daar staat een bestandsnaam achter, bewerk dat bestand.
Zoek naar:
en verwijderd de "puntkomma" voor het woord extension.
Herstart de webserver.
In het geval van Apache ...
In linux:
/etc/init.d/apache2 reload
In unix:
/usr/local/etc/rc.d/apache22 reload
In windows vanuit DOS
httpd -k restart
In windows vanuit UI
Start > Programma's > Apache software foundation > Monitor Apache servers
En klik op restart
Lukt het dan wel?
Groet,
Gewijzigd op 06/05/2012 19:42:09 door Toine vd P
Dit staat bij de Loaded configuration file
/usr/local/lib/php.ini
Zou het eigenlijk ook zonder SSL willen? De webhost biedt geen SSL aan
Dem Ian op 06/05/2012 19:07:08:
@ Obelix en Idefix, hoe ziet jouw code eruit?
Code staat in post van 06/05/2012 14:20:03
Gewijzigd op 06/05/2012 21:08:15 door Obelix Idefix
Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead in /home/a5991492/public_html/classes/class.phpmailer.php on line 1936
Dit is dus iets van me webhost maar hoe zou ik dit kunnen aanpassen?
Dit staat ietstje boven lijn 1936:
/**
* Returns the proper RFC 822 formatted date.
* @access public
* @return string
* @static
*/
public static function RFCDate() {
$tz = date('Z');
$tzs = ($tz < 0) ? '-' : '+';
$tz = abs($tz);
$tz = (int)($tz/3600)*100 + ($tz%3600)/60;
$result = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $tzs, $tz);
return $result;
}