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.

<?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.");
?>
@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.
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.
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:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
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 (
<?php
$xMoeilijkeNaam = 10;
$y = 100 / $xMoeilijkeName; // ===> undefined var en division by Zero.
?>

@Karin, Ja later kun je dat gewoon weer verwijderen, het is alleen maar voor het debuggen.
Dank Ivo, helemaal duidelijk

[size=xsmall]Toevoeging op 04/08/2014 13:34:20:[/size]

...en Frank
<?php
require 'lib\class.phpmailer.php'; //werkt op windows systemen maar niet op Linux
require 'lib/class.phpmailer.php'; // werkt altijd op beiden
?>
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!

Reageren