PHPmailer lijkt niet ondersteund door provider
Ik heb een website gemaakt op de localhost en die moet nu live. Een van de onderdelen is het samenstellen van een factuur in pdf die vervolgens verzonden wordt. Dat doe ik met PHPmailer. Nu kreeg ik dat op de liveomgeving bij Hostnet niet voor elkaar. Ik ben aan het testen gegaan met het onderstaand testscript. Op mijn eigen server bij SoHosted werkt dit, maar bij Hostnet niet. Kan het zijn dat Hostnet dit niet ondersteund of moet ik nog iets instellen (bijv. in PHP.ini)? Hostnet geeft als tip dat ik de standaard PHPmail functie moet gebruiken (wat lastig is met bijlagen) en dat ze me verder niet kunnen helpen met dit onderwerp.
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
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
<?php
require 'lib\class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "xxx";
//html body
$body = "Hallo <font size=\"4\">Karin</font> ,<br />";
$body .= "hoe is het er mee?";
//plain text version
$text_body = "Hallo!\n";
$text_body .= "Hoe is het er mee?";
$mail->Body = $body;
$mail->AltBody = $text_body;
$mail->Subject = "Bevestiging van uw bestelling";
$mail->AddAddress("[email protected]", "Ikke");
//$mail->AddBCC($address);
// pdf aanmaken
require_once 'lib\fpdf.php';
class PDF extends FPDF
{
//Page header
function Header()
{
$this->Image("images/briefheader.png", 0, 0, 210, 56);
$this->Cell(0,35,'',0,1,'L');
}
//Page footer
function Footer()
{
$this->SetY(-15);
$this->SetFont('helvetica', 'I', 10 );
$this->Cell(0, 10, 'Naam van bedrijf',0,0, 'C');
}
}
$pdf=new PDF('P', 'mm', 'A4');
$pdf->AddPage();
$pdf->SetFont('helvetica', 'B', 16);
$pdf->Cell(40,10, 'FACTUUR');
//$pdf->Output();
$tmpfname = "H764fis/" . uniqid() . ".pdf";
//die($tmpfname);
$pdf->Output($tmpfname, 'F');
// attachement toevoegen
$mail->AddAttachment($_SERVER["DOCUMENT_ROOT"] . "/ScarlettMarijsPHP/$tmpfname", "factuurnr_13005.pdf");
if(!$mail->Send())
echo("De bevestigingse-mail en de factuur konden niet worden verstuurd. Controleer uw persoonlijke gegevens of neem contact met ons op.");
else
echo("Dank voor uw bestelling!<br /><br />U ontvangt de bevestigingse-mail en de factuur op het volgende e-mailadres: <br /><br />Na betaling van de factuur sturen wij uw artikelen op.");
?>
require 'lib\class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "xxx";
//html body
$body = "Hallo <font size=\"4\">Karin</font> ,<br />";
$body .= "hoe is het er mee?";
//plain text version
$text_body = "Hallo!\n";
$text_body .= "Hoe is het er mee?";
$mail->Body = $body;
$mail->AltBody = $text_body;
$mail->Subject = "Bevestiging van uw bestelling";
$mail->AddAddress("[email protected]", "Ikke");
//$mail->AddBCC($address);
// pdf aanmaken
require_once 'lib\fpdf.php';
class PDF extends FPDF
{
//Page header
function Header()
{
$this->Image("images/briefheader.png", 0, 0, 210, 56);
$this->Cell(0,35,'',0,1,'L');
}
//Page footer
function Footer()
{
$this->SetY(-15);
$this->SetFont('helvetica', 'I', 10 );
$this->Cell(0, 10, 'Naam van bedrijf',0,0, 'C');
}
}
$pdf=new PDF('P', 'mm', 'A4');
$pdf->AddPage();
$pdf->SetFont('helvetica', 'B', 16);
$pdf->Cell(40,10, 'FACTUUR');
//$pdf->Output();
$tmpfname = "H764fis/" . uniqid() . ".pdf";
//die($tmpfname);
$pdf->Output($tmpfname, 'F');
// attachement toevoegen
$mail->AddAttachment($_SERVER["DOCUMENT_ROOT"] . "/ScarlettMarijsPHP/$tmpfname", "factuurnr_13005.pdf");
if(!$mail->Send())
echo("De bevestigingse-mail en de factuur konden niet worden verstuurd. Controleer uw persoonlijke gegevens of neem contact met ons op.");
else
echo("Dank voor uw bestelling!<br /><br />U ontvangt de bevestigingse-mail en de factuur op het volgende e-mailadres: <br /><br />Na betaling van de factuur sturen wij uw artikelen op.");
?>
Gewijzigd op 03/08/2014 11:51:21 door Karin Gijssen
Karin Gijssen op 03/08/2014 10:54:05:
Hostnet geeft als tip dat ik de standaard PHPmail functie moet gebruiken (wat lastig is met bijlagen) en dat ze me verder niet kunnen helpen met dit onderwerp.
Dat is toch geen tip?! Hebben ze ook uitgelegd hoe je met de mailfunctie van PHP dan bijlagen moet versturen?
Zou eerst even de mailadressen uit je post / code halen.
Verder zou ik eerst de pdf-file aanmaken en daarna pas phpmailer aanroepen.
Daarmee houd je twee processen gescheiden.
Heb je al gekeken of het pdf-bestand wel wordt aangemaakt?
Beste Obelix en Idefix,
Ik heb de mailadressen verwijderd (dank voor de tip).
Hostnet zegt dat dit niet onder de ondersteuning valt. Ik kan best uitvinden hoe ik een attachment verstuur met de standaard mailfunctie, maar hiervoor is nu juist PHPmailer verzonnen. Raar dat ik die niet zou mogen gebruiken.
Bij mijn hostingpartij wordt de pdf bestand keurig aangemaakt en verzonden. Bij Hostnet wordt de pdf niet gemaakt, omdat hij zover niet komt. Goede tip om het aanmaken van de pdf apart te houden. Dan kan ik kijken of de pdf goed wordt aangemaakt. Ik heb overigens ook een test gedaan zonder pdf-bijlage (gewoon kaal mailtje) en dat werkt ook niet.
Klant aanraden een andere hostingpartij te zoeken?
Toevoeging op 03/08/2014 11:49:10:
Het lijkt er op dat ook fpdf.php niet werkt wordt bij hostnet...
Ik heb de mailadressen verwijderd (dank voor de tip).
Hostnet zegt dat dit niet onder de ondersteuning valt. Ik kan best uitvinden hoe ik een attachment verstuur met de standaard mailfunctie, maar hiervoor is nu juist PHPmailer verzonnen. Raar dat ik die niet zou mogen gebruiken.
Bij mijn hostingpartij wordt de pdf bestand keurig aangemaakt en verzonden. Bij Hostnet wordt de pdf niet gemaakt, omdat hij zover niet komt. Goede tip om het aanmaken van de pdf apart te houden. Dan kan ik kijken of de pdf goed wordt aangemaakt. Ik heb overigens ook een test gedaan zonder pdf-bijlage (gewoon kaal mailtje) en dat werkt ook niet.
Klant aanraden een andere hostingpartij te zoeken?
Toevoeging op 03/08/2014 11:49:10:
Het lijkt er op dat ook fpdf.php niet werkt wordt bij hostnet...
Kun je met phpmailer welmails zonder attachment versturen?
Phpmailer maakt default volgens mij (uiteindelijk) gebruik van de php functie mail(). Je kunt ook anders, maar danmoet je dat zelf aangeven.
Zou raar zijn als phpmailer niet zou werken en mail wel.
Maar als de pdf niet wordtaangemaakt, dan kan het ook zijn dat phpmailer een probleem heeft wegens niet bestaand attachment.
Toevoeging op 03/08/2014 13:53:45:
Ah dat had je al wel getest. Krijg je nog foutmeldingen?
Toevoeging op 03/08/2014 13:56:12:
Hostnet. Dat is dje partij waar tussen vrijdagmiddag half 4 en maandag geen domeinen verhuisd kunnen worden.
Ben ik snel weer vertrokken. Kost weinig, heb je ook niets...
Phpmailer maakt default volgens mij (uiteindelijk) gebruik van de php functie mail(). Je kunt ook anders, maar danmoet je dat zelf aangeven.
Zou raar zijn als phpmailer niet zou werken en mail wel.
Maar als de pdf niet wordtaangemaakt, dan kan het ook zijn dat phpmailer een probleem heeft wegens niet bestaand attachment.
Toevoeging op 03/08/2014 13:53:45:
Ah dat had je al wel getest. Krijg je nog foutmeldingen?
Toevoeging op 03/08/2014 13:56:12:
Hostnet. Dat is dje partij waar tussen vrijdagmiddag half 4 en maandag geen domeinen verhuisd kunnen worden.
Ben ik snel weer vertrokken. Kost weinig, heb je ook niets...
Hoi Ivo,
Ik heb nog veel eenvoudiger scriptjes gemaakt (zie hieronder), voor mail en pdf apart. Beide apart getest en ze werken prima bij mijn provider en niet bij Hostnet. Ik krijg geen foutmeldingen, alleen een wit scherm en geen opgeslagen pdf of verstuurde mail.
Nog eens gebeld met hostnet en die zeggen dat ze geen webdevelopers in dienst hebben en hierbij niet kunnen helpen(!), maar als ik het op de mail zou zetten, willen ze er nog eens naar kijken. Ben benieuwd. Ik denk dat we vast kunnen stellen dat dit geen PHP of inhoudelijk scriptprobleem is, maar een server/hosting probleem. Dank voor jullie hulp zover in ieder geval.
Ik heb nog veel eenvoudiger scriptjes gemaakt (zie hieronder), voor mail en pdf apart. Beide apart getest en ze werken prima bij mijn provider en niet bij Hostnet. Ik krijg geen foutmeldingen, alleen een wit scherm en geen opgeslagen pdf of verstuurde mail.
Nog eens gebeld met hostnet en die zeggen dat ze geen webdevelopers in dienst hebben en hierbij niet kunnen helpen(!), maar als ik het op de mail zou zetten, willen ze er nog eens naar kijken. Ben benieuwd. Ik denk dat we vast kunnen stellen dat dit geen PHP of inhoudelijk scriptprobleem is, maar een server/hosting probleem. Dank voor jullie hulp zover in ieder geval.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
// testscriptje pdf
require_once 'lib\fpdf.php';
$pdf=new FPDF('P', 'mm', 'A4');
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40,10, 'Test-pdf');
$tmpfname = "H764fis/" . uniqid();
$pdf->Output($tmpfname . ".pdf", 'F');
?>
// testscriptje pdf
require_once 'lib\fpdf.php';
$pdf=new FPDF('P', 'mm', 'A4');
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40,10, 'Test-pdf');
$tmpfname = "H764fis/" . uniqid();
$pdf->Output($tmpfname . ".pdf", 'F');
?>
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Testscriptje phpmailer:
require 'lib\class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "xxx";
//html body
$body = "Hello world! html";
//plain text version
$text_body = "Hello world! text";
$mail->Body = $body;
$mail->AltBody = $text_body;
$mail->Subject = "testmail";
$mail->AddAddress("[email protected]", "Ikke");
// verzenden
if(!$mail->Send())
echo("Niet gelukt");
else
echo("Wel gelukt");
?>
// Testscriptje phpmailer:
require 'lib\class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "xxx";
//html body
$body = "Hello world! html";
//plain text version
$text_body = "Hello world! text";
$mail->Body = $body;
$mail->AltBody = $text_body;
$mail->Subject = "testmail";
$mail->AddAddress("[email protected]", "Ikke");
// verzenden
if(!$mail->Send())
echo("Niet gelukt");
else
echo("Wel gelukt");
?>
Ik zou Swiftmailer doen in plaats van phpmailer, want met phpmailer heb je een kans dat het in de spambox terecht komt.
Wat ik merkte toen een website overging naar ArgeWeb was dat ik in het phpmailer script iets toe moest voegen om smtp aan te zetten.
Was bij hoster ervoor nooit nodig.
Misschien zit het daar in.
Uit m'n hoofd was het iets van $mail->IsSMTP();
Was bij hoster ervoor nooit nodig.
Misschien zit het daar in.
Uit m'n hoofd was het iets van $mail->IsSMTP();
Ik zou eens kijken via phpinfo() welke PHP versie op hostnet draait. Misschien ondersteund PHPmailer en/of FPDF de oudere versie niet.
@Ramon: mailen via de smtp gaat volgens Hostnet zeker niet lukken. Dat had ik namelijk op mijn lokale server wel.
@LEDfan: het is PHP5.3, en de classes zijn daarmee compatible.
Toevoeging op 03/08/2014 15:46:58:
@GotoLearn: ik heb Swiftmailer gedownload en ga daar eens mee aan de slag. Wel lastiger voor een beginner omdat het Object geörienteerd is (zover was ik nog niet). Waarom loop ik met PHPmailer meer risico op de spambox?
Toevoeging op 03/08/2014 16:24:09:
Oplossing! Ik moet volgens de helpdesk de bestanden class.phpmailer.php en fpdf.php (en bijbehorende dingen als fonts etc.) in de root van de website zetten en daarnaar verwijzen (dus zonder lib\). Dan werkt het wel. Wel vreemd, want daarmee wordt mijn root wel een zootje. Maar als het niet anders kan...
@LEDfan: het is PHP5.3, en de classes zijn daarmee compatible.
Toevoeging op 03/08/2014 15:46:58:
@GotoLearn: ik heb Swiftmailer gedownload en ga daar eens mee aan de slag. Wel lastiger voor een beginner omdat het Object geörienteerd is (zover was ik nog niet). Waarom loop ik met PHPmailer meer risico op de spambox?
Toevoeging op 03/08/2014 16:24:09:
Oplossing! Ik moet volgens de helpdesk de bestanden class.phpmailer.php en fpdf.php (en bijbehorende dingen als fonts etc.) in de root van de website zetten en daarnaar verwijzen (dus zonder lib\). Dan werkt het wel. Wel vreemd, want daarmee wordt mijn root wel een zootje. Maar als het niet anders kan...
Dat risico van spambox is net zo groot met swiftmailer....
Zorg eerst eens vor een foutmelding.
Wit scherm duidt vaak op een parse- of andere fatal error, in combinatie met 'onderdruk foutmeldingen'
Dan kun je dagen zoeken naar een missende spatie of een } te veel.
Php kan vrij duidelijke foutmeldingen geven, mits je dat niet uit zet.
http://wiki.pfz.nl/troubleshooter/#stap-1-regel-een-foutmelding
Toevoeging op 03/08/2014 16:27:50:
Waarschijnlijk heb je last van een path dat niet klopt.
Bij require had je een foutmelding moeten hebben die aangaf waar hij zocht (en niet vond)
Zorg eerst eens vor een foutmelding.
Wit scherm duidt vaak op een parse- of andere fatal error, in combinatie met 'onderdruk foutmeldingen'
Dan kun je dagen zoeken naar een missende spatie of een } te veel.
Php kan vrij duidelijke foutmeldingen geven, mits je dat niet uit zet.
http://wiki.pfz.nl/troubleshooter/#stap-1-regel-een-foutmelding
Toevoeging op 03/08/2014 16:27:50:
Waarschijnlijk heb je last van een path dat niet klopt.
Bij require had je een foutmelding moeten hebben die aangaf waar hij zocht (en niet vond)
@Ivo: Het is echt een Hostnetdingetje en geen codedingetje. Ik had wat echo's toegevoegd na verschillende regels en hij roept de classes gewoon niet aan in de submap en wel in de root. Het pad klopte wel. Het werkt op twee andere omgevingen ook gewoon prima met de originele code.
@karin
Het lijkt erop dat Ivo gelijk had dat je bij beide evenveel kans loopt dat het in spambox terecht komt, ahoewel die kans minder is als je gebruik maakt van SMTP, maar qua performance is Swiftmailer beter dan phpmailer. Hier een kleine tutorial om je op weg te helpen, mocht je gebruik willen maken van Swiftmailer:
http://www.sitepoint.com/sending-email-with-swift-mailer/
Maar je kan evengoed doorgaan met phpmailer, als dat prettiger is voor je en men is nu al je aan het helpen hier.
Het lijkt erop dat Ivo gelijk had dat je bij beide evenveel kans loopt dat het in spambox terecht komt, ahoewel die kans minder is als je gebruik maakt van SMTP, maar qua performance is Swiftmailer beter dan phpmailer. Hier een kleine tutorial om je op weg te helpen, mocht je gebruik willen maken van Swiftmailer:
http://www.sitepoint.com/sending-email-with-swift-mailer/
Maar je kan evengoed doorgaan met phpmailer, als dat prettiger is voor je en men is nu al je aan het helpen hier.
Dank je voor de link GotoLearn! Dat ziet er nog wel overzichtelijk uit voor een beginneling ;-)
Voor dit project blijf ik voor nu even bij PHPmailer, maar als ik tijd over heb ga ik zeker ook kijken naar Swiftmailer, want performance is wel een belangrijk punt.
Voor dit project blijf ik voor nu even bij PHPmailer, maar als ik tijd over heb ga ik zeker ook kijken naar Swiftmailer, want performance is wel een belangrijk punt.
Karin ik geef je wel het dringende advies om de tips van Ivo op te volgen.
Er kunnen in PHP ook fouten optreden als gevolg van een andere server configuratie. en als jij een witte pagina krijgt dan wordt je script gewoon voortijdig stil gezet door een foutmelding. En nu zeg je dan eigenlijk tussen de regels door dat je niet wilt weten wat er fout gaat maar hoe wil je dan ooit de juiste oplossing krijgen?
PHP Mailer <-> SwiftMailer is gewoon beiden prima om mee te werken. Natuurlijk hebben we allemaal voorkeuren omdat onbekend onbemind is. Ik herken wat je zegt dat SwiftMailer meer OOP is. Werk je daarom liever met PHPMailer dan moet je dat gewoon doen.
foutmeldingen aanzetten in je scripts:
Er kunnen in PHP ook fouten optreden als gevolg van een andere server configuratie. en als jij een witte pagina krijgt dan wordt je script gewoon voortijdig stil gezet door een foutmelding. En nu zeg je dan eigenlijk tussen de regels door dat je niet wilt weten wat er fout gaat maar hoe wil je dan ooit de juiste oplossing krijgen?
PHP Mailer <-> SwiftMailer is gewoon beiden prima om mee te werken. Natuurlijk hebben we allemaal voorkeuren omdat onbekend onbemind is. Ik herken wat je zegt dat SwiftMailer meer OOP is. Werk je daarom liever met PHPMailer dan moet je dat gewoon doen.
foutmeldingen aanzetten in je scripts:
Hoi Frank, ik neem aan dat je die errorreporting in de liveomgeving weer uitzet, toch? Daar moet ik een echte foutafhandeling inbouwen, waar de gebruiker iets aan heeft.
let erop dat als je middels die 2 regels de error reporting aan zet, je nog altijd een probleem hebt als er een parse error is:
als je script niet wil starten, dan kan hij dus ook niet de error reporting aan zetten. In het artikel dat ik hierboven aanhaalde, staat als het goed is ook hoe je dat in .htaccess doet.
--
In productie zet je de reporting uit/ log je naar een file. Sommige fouten zijn af te vangen en moeten gemeld worden aan de gebruiker (sorry, file bestaat niet, sorry mail server is koffie halen),
maar sommige fouten treden als het goed is alleen in je ontwikkel-traject op (
als je script niet wil starten, dan kan hij dus ook niet de error reporting aan zetten. In het artikel dat ik hierboven aanhaalde, staat als het goed is ook hoe je dat in .htaccess doet.
--
In productie zet je de reporting uit/ log je naar een file. Sommige fouten zijn af te vangen en moeten gemeld worden aan de gebruiker (sorry, file bestaat niet, sorry mail server is koffie halen),
maar sommige fouten treden als het goed is alleen in je ontwikkel-traject op (
@Karin, Ja later kun je dat gewoon weer verwijderen, het is alleen maar voor het debuggen.
Dank Ivo, helemaal duidelijk
Toevoeging op 04/08/2014 13:34:20:
...en Frank
Toevoeging op 04/08/2014 13:34:20:
...en Frank
Aha...ik dacht dat het lag aan het feit dat Hostnet PHP5.3 gebruikt en de andere twee 5.4.
Dan is het mysterie nu helemaal opgelost!
Dan is het mysterie nu helemaal opgelost!
juist..




