Script copie de fichiers et envoi de mails

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Script copie de fichiers et envoi de mails

Re: Script copie de fichiers et envoi de mails

par Invité » 04 nov. 2013, 16:51

Je reviens vers vous :

J'ai essayé de récupérer les noms des pièces jointes dans le corps du mail, mais sans succès.
S'il y en a une pas de problème, mais s'il y en a plusieurs, là commence la galère.......
J'ai essayé les Forums, aides et autres mais ...............je n'arrive à rien.
Au secours........................Merci

Re: Script copie de fichiers et envoi de mails

par dida44 » 04 nov. 2013, 10:47

Merci Moogli,

Je vais regarder cela de plu près.
Sinon, pour ce qui est du fait de récupérer le nom de toutes les pièces jointes dans le corps du mail, auriez-vous une idée ?

Encore merci d'avance pour votre aide.

Re: Script copie de fichiers et envoi de mails

par moogli » 01 nov. 2013, 17:20

salut,


script trop dense pour l'analyser pour toi ;)

as tu vérifier le log de php s'il y a avait des erreurs ?

il y a de grandes chances que les fichiers ne soit pas créés la où tu le pense et que cela fasse que la copie échoue ;)


@+

Script copie de fichiers et envoi de mails

par dida44 » 31 oct. 2013, 11:58

Bonjour à tous,

Voila mon soucis :
J'ai un script PHP qui copie des pièces jointes dans un dossier. Le script fonctionne très bien lorsqu'il est lancé dans un navigateur, par contre lorsqu'il est lancé à partir d'une tâche planifiée Windows, il s'exécute bien mais ne fait pas la copie de fichiers....

Autre soucis, comment récupérer dans le mail envoyé, tous les noms des pièces jointes copiées. (problème au niveau du $msg ligne 169)

Ci-dessous mon code en espérant que vous puissiez m'aider.
Merci d'avance à vous tous.

<?php
 
function getFileExtension($fileName){
   $parts=explode(".",$fileName);
   return $parts[count($parts)-1];
}
 
 
  // Connexion sur le boîte mail
	$server = '{192.168.75.4:143/novalidate-cert}_Test';
	$username = 'user';
	$password = 'motdepasse';
 
 
 
 
	$imap = imap_open($server, $username, $password) or die("imap connection error");
 
$message_count = imap_num_msg($imap);
for ($m = 1; $m <= $message_count; ++$m){
 
    $header = imap_header($imap, $m);
 
    $email[$m]['from'] = $header->from[0]->mailbox.'@'.$header->from[0]->host;
    $email[$m]['fromaddress'] = $header->from[0]->personal;
    $email[$m]['to'] = $header->to[0]->mailbox;
    $email[$m]['subject'] = $header->subject;
    $email[$m]['message_id'] = $header->message_id;
    $email[$m]['date'] = $header->udate;
 
    $from = $email[$m]['fromaddress'];
    $from_email = $email[$m]['from'];
    $to = $email[$m]['to'];
    $subject = $email[$m]['subject'];
 
    echo $from_email . '</br>';
    echo $to . '</br>';
    echo $subject . '</br>';
 
    $structure = imap_fetchstructure($imap, $m);
 
    $attachments = array();
    if(isset($structure->parts) && count($structure->parts)) {
 
        for($i = 0; $i < count($structure->parts); $i++) {
 
            $attachments[$i] = array(
                'is_attachment' => false,
                'filename' => '',
                'name' => '',
                'attachment' => ''
            );
 
            if($structure->parts[$i]->ifdparameters) {
                foreach($structure->parts[$i]->dparameters as $object) {
                    if(strtolower($object->attribute) == 'filename') {
                        $attachments[$i]['is_attachment'] = true;
                        $attachments[$i]['filename'] = $object->value;
                    }
                }
            }
 
            if($structure->parts[$i]->ifparameters) {
                foreach($structure->parts[$i]->parameters as $object) {
                    if(strtolower($object->attribute) == 'name') {
                        $attachments[$i]['is_attachment'] = true;
                        $attachments[$i]['name'] = $object->value;
                    }
                }
            }
 
            if($attachments[$i]['is_attachment']) {
                $attachments[$i]['attachment'] = imap_fetchbody($imap, $m, $i+1);
                if($structure->parts[$i]->encoding == 3) { // 3 = BASE64
                    $attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']);
                }
                elseif($structure->parts[$i]->encoding == 4) { // 4 = QUOTED-PRINTABLE
                    $attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']);
                }
            }
        }
    }
 
 
	if(count($attachments)!=0){
		foreach ($attachments as $key){
			if($key['is_attachment']==1){
	file_put_contents($key['filename'], $key['attachment']);
 
}
}
}
}
 
 
  // Copy des pièces jointes dans le dossier ou est lancé le script
 function recurse_copy($src,$dst) {  
 
    $dir = opendir($src);   
     @mkdir($dst);   
 
     while(false !== ( $file = readdir($dir)) ) {   
 
         if (( $file != '.' ) && ( $file != '..' )) {   
 
            if ( is_dir($src . '/' . $file) ) {   
 
                 recurse_copy($src . '/' . $file,$dst . '/' . $file);   
 
             }   
 
             else {   
 
                 copy($src . '/' . $file,$dst . '/' . $file);   
 
            }   
 
         }   
 
     }   
 
     closedir($dir);   
 
 }  
 
 
 // Copie des fichiers vers mon pc
 // Repertoire source
 $src = "C:/Program Files (x86)/OCS Inventory NG/xampp/htdocs/Script_Fourn2/";  
 
 // Repertoire de destination 
  $dst = "//MonPC/Partage/_AZ"; 
 
 recurse_copy($src,$dst); 
 
 
 
 
 	// Suppression du fichier php
unlink("//MonPC/Partage/_AZ/Move_Attachments_Test2.php");
 
 
	// Test du répertoire //MonPC/Partage/_AZ/ si vide ou non
 $OK=99;
$dir = ("//Didier-d/Partage/_AZ");
if (is_dir($dir)) 
{
 if ($Pointeur = opendir($dir)) 
  {
   while (($file = readdir($Pointeur)) !== false) 
      {
       if ($file!="." && $file!=".." ) $OK=0;
       if ($file=="." || $file==".." ) $OK=1;
       }
   closedir($Pointeur);
  }
}
	// if( $OK==0) echo ("Le répertoire n'est pas vide");
	// if( $OK==99) echo ("Le répertoire n'existe pas");
	// if( $OK==1) echo ("Le répertoire existe et est vide");
if ( $OK==1)
	{
echo ("...Le répertoire $dir existe et est vide...");
	}
else
	{
	$to = '[email protected], [email protected]';
	$subject = 'Copie des pièces jointes fournisseurs';
	$msg = 'Nom de la pièce jointe déplacée :   '   . $key['filename'] .'';
	$headers = "From: Didier Dalcantara <[email protected]>\r\n";
	mail($to, $subject,$msg, $headers);
	}
 
 
	// Copie des fichiers du repertoire _AZ vers _AZ2	
	$src2 = "//MonPC/Partage/_AZ";   
    $dst2 = "//MonPC/Partage/_AZ2"; 
 
 
 recurse_copy($src2,$dst2);
 
 
	// Suppression des fichiers contenu dans le répertoire _AZ
		$dir2 = "//MonPC/Partage/_AZ";
function unlinkRecursive($dir2, $deleteRootToo) 
{ 
    if(!$dh = @opendir($dir2)) 
    { 
        return; 
    } 
    while (false !== ($obj = readdir($dh))) 
    { 
        if($obj == '.' || $obj == '..') 
        { 
            continue; 
        }  
 
        if (!@unlink($dir2 . '/' . $obj)) 
        { 
            unlinkRecursive($dir2.'/'.$obj, true); 
        } 
    }  
 
    closedir($dh);  
 
    if ($deleteRootToo) 
    { 
        @rmdir($dir2); 
    }  
 
    return; 
} 
unlinkRecursive($dir2, false); 
 
 
 
	// Suppression des fichiers dans le répertoire d'origine sauf les PHP
foreach (glob("*.pdf") as $filename)
{ 
@unlink($filename);
}
 
foreach (glob("*.xlsx") as $filename)
{
@unlink($filename);
}
 
foreach (glob("*.doc") as $filename)
{
@unlink($filename);
}
 
foreach (glob("*.xls") as $filename)
{
@unlink($filename);
}
 
foreach (glob("*.csv") as $filename)
{
@unlink($filename);
}
 
foreach (glob("*.docx") as $filename)
{
@unlink($filename);
}
 
foreach (glob("*.txt") as $filename)
{
@unlink($filename);
}
 
 
	// Déplacement des mails de INBOX vers Olds_Msgs
$nbmess = imap_num_msg($imap); 
for($j=1;$j<=$nbmess;$j++) 
{
  imap_mail_move($imap,$message_count,'_test2'); 
}
 
imap_expunge($imap);
imap_close($imap);
 
 
 
 
?>