8791 sujets

Développement web côté serveur, CMS

Bonjour,
je cherche à m'envoyer automatiquement un mail lors de l'upload de fichier sur un FTP.
j'utilise la fonction suivante (le fichier mail.html est dans le même dossier que mon fichier de fonctions):


<?php
  function SendMailAdmin(){
	$srcmail= "mail.html";

     	if(file_exists($srcmail)){

        // construction du mail
        $dest="wam@gmail.com";

        $subject="Nouveau(x) fichier(s) uploadé(s) sur votre FTP";

        $handle = fopen($srcmail, "r");
        $mess = fread($handle, filesize($srcmail));
        fclose($handle);
                

        $from  = "From: Pascal le grand frère <contacts@wam.fr>\n";
        $from .= "MIME-version: 1.0\n";
        $from .= "Content-type: text/html; charset= iso-8859-1\n";
		
        // remplacements des tags de mail.html
		
        $mess=str_replace("[message]", "un nouveau fichier à été uploadé sur votre FTP", $mess); 


		// envoi du message
        		
        mail($dest, $subject, $mess, $from);
        
       }else{
	     echo("msg fail!");	
		}

    }
?>


dans cette configuration, je récupère un beau "msg fail!".
j'ai essayé d'enlever la condition if(file_exists($srcmail)), juste pour voir.

Je reçoit bien un mail, malheureusement vide, et je récupère les erreurs suivante:

Warning: fopen(mail.html) [function.fopen]: failed to open stream: No such file or directory in /homez.354/blablabla/www/upload/includes/UploadConfig.php on line 20

Warning: filesize() [function.filesize]: stat failed for mail.html in /homez.354/blablabla/www/upload/includes/UploadConfig.php on line 22

Warning: fread(): supplied argument is not a valid stream resource in /homez.354/blablabla/www/upload/includes/UploadConfig.php on line 22

Warning: fclose(): supplied argument is not a valid stream resource in /homez.354/blablabla/www/upload/includes/UploadConfig.php on line 24


même soucis si je tape l'adresse de mon fichier mail.html en dur.
Modifié par pieryv (01 Dec 2011 - 16:02)
ben élémentaire mon cher pieryv.

le fichier n'existe pas!

a écrit :

Le fichier mail.html est dans le même dossier que mon fichier de fonctions
...
$srcmail= "mail.html";



cf la doc.
file_exists,
fopen

Passes le chemin du fichier en chemin absolu.
depuis la racine de ton système d'exploitation (
/ sous linux,
C: ou une autre lettre sous windows )
CPascal a écrit :

le fichier n'existe pas!


Et pourtant!

J'ai même testé de remplacer "mail.php" par "http://www.monsite.com/upload/includes/mail.html"

Pas mieux...
Modifié par pieryv (01 Dec 2011 - 09:18)
j'ai testé autre chose:

function SendMailUpload(){
	$srcmail="http://www.monsite.com/folder/html/mailupload.html";
   	    if(file_exists($srcmail)){
	                echo("fichier existant");
			sleep(5);

        // construction du mail
        $dest="wam@gmail.com";
        $subject="Nouveau(x) fichier(s) sur votre FTP";

        // ouverture en lecture de $srcmail
        $handle = fopen($srcmail, "r");
        $mess = fread($handle, filesize($srcmail));
        fclose($handle);
		
	//infos expéditeur
        $from  = "From: Bozo le Clown <contacts@maboite.fr>\n";
        $from .= "MIME-version: 1.0\n";
        $from .= "Content-type: text/html; charset= iso-8859-1\n";
        
        // remplacement les tags par leur valeur
	//recuperation du nom de l'utilisateur connecté
        $mess=str_replace("[nom]", $_SESSION["userinfos"]["name"], $mess); 
        
        // envoi du message
        mail($dest, $subject, $mess, $from);
	header('Location, "http://monsite.com/upload/index.php"');
	
        }else{
	 echo("epic fail");
	 }

 }


et c'est là que ça devient bizarre: si la fonction ne trouvait pas le mailupload.html, je devrai récupérer un bô "epic fail".
Mais en fait non. je ne récupère pas non plus le "fichier existant" mais je suis malgré tout redirigé. le mystère s'épaissit...
à noter que l'adresse de mon mailupload.html est en dur, et que si je la c/c dans mon explorateur, je vois bien le modèle de mail.