J'ai écrit ce script qui envoie au client un reçu de sa commande, mais il y a un problème :
Il n'attendra pas le script PDF.
Il requiert donc simplement le PDF script, commence à l'exécuter et envoie le courrier pendant que le PDF script travaille encore sur le PDF. Je suis sûr qu'il existe un moyen de retarder l'envoi de l'email script, mais pour compliquer les choses :
L'ensemble du fichier order.php est exécuté avec un appel ajax de jquery, et le script attend que le fichier php se termine, puis signale au navigateur que la demande a abouti. La commande peut donc attendre plus de cinq minutes, tandis que le client se demande pourquoi cela prend autant de temps.
J'ai donc besoin qu'il attende que le PDF soit créé et qu'il envoie ensuite le courrier, mais il ne doit pas laisser le client dans l'expectative.
Voici mon code :
<?php
$addid = "orderid.txt";
$current = file_get_contents($addid) + 1;
echo $current;
file_put_contents($addid, $current);
?>
<?php
// Lue tilauksen ID sähköpostia varten
$orderid = "orderid.txt";
$ordernumber = file_get_contents($orderid);
// Kirjoita kuitti
require('receipt.php');
?>
<?php
//Lähetä tilausvahvistus
require_once('mail/class.phpmailer.php');
$path = "kuitit/kuitti".$orderid.".pdf";
$bodytext = '
Olemme vastaanottaneet tilauksenne '. $ordernumber .'.
Tilaamanne tuotteet löytyvät liitteestä.'
;
$email = new PHPMailer();
$email->From = 'no-reply@coverlinefilms.fi';
$email->FromName = 'no-reply@coverlinefilms.fi';
$email->Subject = 'Olemme vastaanottaneet tilauksenne ' . $ordernumber;
$email->Body = $bodytext;
$email->AddAddress('christian.nikkanen@gmail.com');
$email->AddAttachment($path, 'kuitti777.pdf');
return $email->Send();
?>