Aller au contenu

Envoi mail avec pièce jointe en tâche Cron


AvenueDuWeb

Sujets conseillés

Bonjour tout le monde,

J'explique le pourquoi du comment de ce titre super précis. J'ai un script qui envoie une sauvegarde de base de donées par mail en php, il fonctionne parfaitement. Mais si je le lance en tâche Cron, le mail est bien envoyé mais le fichier joint (en .gz) fait 0 octet et le décompresseur me dit que l'archive est vide. Voici le script en question :

<?php 
$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
$msg = "Ceci est un message au format MIME 1.0 multipart/mixed.\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$date = date("d/m/Y");
$msg .= "Sauvegarde du $date \r\n";
$msg .= "\r\n";
$file = "fichier.gz";
$fp = fopen($file, "rb");
$attachment = fread($fp, filesize($file));
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: application/x-gzip; name=\"$file\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";
$destinataire = "destinataire_AT_gmail.com";
$expediteur   = "expediteur_AT_gmail.com";
$reponse      = $expediteur;
mail($destinataire, "Sauvegarde de la base de données du $date", $msg,
    "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
?>

Précision, le serveur de mail est Exim. Si quelqu'un sait d'où peut venir le problème où a un autre script à me proposer (en shell par exemple) je suis preneur. Merci d'avance. @+

Lien vers le commentaire
Partager sur d’autres sites

Donc la solution était très simple, il suffisait de mettre le chemin complet du fichier, quand c'est lancé à partir de la tâche cron, PHP part de la racine du disque alors que lancé par Apache il part du dossier du script. Désolé de vous avoir fait chier avec ça, j'aurai dû trouver tout seul (enfin surtout bcp plus vite), simplement en lançant le script en shell. Merci quand même. @+

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...