IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Envoi d'e-mails avec plusieurs pièces jointes


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Envoi d'e-mails avec plusieurs pièces jointes
    Bonjour tout le monde,

    je suis nouveaux parmi vous, je vous en supplie de m'aider sur mon script...J'envoie mes message mais je ne reçoie qu'un seul fichier ataché parmi en etat endommagé ou plus exactement vide (0.0 KO).

    Si quelqu'un pourra m'aider s'il vous plait ! Parce que je ne suis qu'un debutant en php. Le but de mon script est d'evoyer un mail avec plusieurs attachement ( pieces jointes ) en utilisant des fonctioon et le commutateur Switch case..

    Voila donc mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
     
    <?php
    if (!isset($op)) {$op = "saisir"; }
    {
        global $op;
     
        function saisir()
        {
        echo " <form method=\"POST\" action=\"index.php?op=envoyer\" enctype=\"multipart/form-data\">\n"
    	. " De :<input type=\"text\" name=\"e_mail\"><br />\n"
    	. " A    :<input type=\"text\" name=\"d_mail\"><br />\n"
    	. " <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"30000\" />\n"
    	. " Attachement :<input type=\"file\" name=\"attachement[]\" /><br />\n"
    	. " Attachement :<input type=\"file\" name=\"attachement[]\" /><br />\n"
    	. " Attachement :<input type=\"file\" name=\"attachement[]\" /><br />\n"
    	. " Sujet :<input type=\"text\" name=\"sujet\"><br />\n"
    	. " <textarea name=\"message\" cols=\"20\" rows=\"7\"></textarea><br />\n"
        . " <input type=\"submit\" value=\"Envoyer\">\n"
        . " <input type=\"reset\" value=\"Annuler\">\n"
        . " </form>\n";
        }
     
    function envoyer($_FILES, $e_mail, $d_mail, $sujet, $message)
    {
        if(!empty($_FILES))
    	    {
     
            define('UPLOAD_DIRECTORY', './uploads/');
            $nb_of_files = count($_FILES['attachement']['tmp_name']);
     
            for($i = 0; $i< $nb_of_files; ++$i)
    	        { 	
    				# Verification du telechargement du ficher
    				if(is_uploaded_file($_FILES['attachement']['tmp_name'][$i]))
    	            {
                        $name = $_FILES['attachement']['name'][$i];
    				    $tmp_name = $_FILES['attachement']['tmp_name'][$i];
    					$error = $_FILES['attachement']['error'][$i];            
    					$clean_name = strtolower(basename($name));
    					$clean_name = preg_replace('/[^a-z0-9.-]/', '-', $clean_name);
     
    					# Verification du type du  fichier Mime ou non
    					if(function_exists('mime_content_type'))
    					{
    						$type = mime_content_type($tmp_name);
    					}
    					else
    					{
    						$type = $_FILES['attachement']['type'][$i]; 
    					}
     
    					# Verification du deplacement  du ficher vers le dossier definé
    					if(!move_uploaded_file($tmp_name, UPLOAD_DIRECTORY.$clean_name))
    					{
    						$error_string = "Le fichier <b>n'a pas</b> été déplacé correctement";
    				   	}
    					else
    					{
     
    					# encodage des données
    					# et insertion du " \r\n"  apres chaque  76 carteres.
    					$encoded_content = chunk_split(UPLOAD_DIRECTORY.$clean_name);
     
    					#  Utilisation du temps .
    					$num = md5( time() );
     
    					#  headers Definition  .
    					$header = 'From: ' .$e_mail. ''. "\r\n" ;
    					$header .= "MIME-Version: 1.0\r\n";
    					$header .= "Content-Type: multipart/mixed; ";
    					$header .= "boundary=$num\r\n";
    					$header .= "--$num\r\n";
     
    					# L'action du message 
    					$header .= "Content-Type: text/plain\r\n";
    					$header .= "Content-Transfer-Encoding:8bit\r\n\n";
    					$header .= "$message\r\n";
    					$header .= "--$num\r\n";
     
    					# La section de l'attachement
    					$header .= "Content-Type:  multipart/mixed; ";
    					$header .= "name=" .$name. "\r\n";
    					$header .= "Content-Transfer-Encoding:base64\r\n";
    					$header .= "Content-Disposition:attachment; ";
    					$header .= "filename=" .$name. "\r\n\n";
    					$header .= "$encoded_content\r\n";
    					$header .= "--$num--";
     
    					# Envoi du message
    					$retval = mail ($d_mail, $sujet, $message, $header);
    						if( $retval == true )
    						{
    						echo "Message envoyé...";
    						}
    						else
    						{
    						echo "Erreur...Message non envoyé";
    						}
    					}
    				}
                }
     
            }
    	}
    }
     
        switch ($op)
     
        {
            case "saisir":
            saisir();
            break;
     
            case "envoyer":
            envoyer($_FILES, $e_mail, $d_mail, $sujet, $message);
            break;
     
            default:
            saisir();
            break;
        }
     
     
     
    ?>

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    http://a-pellegrini.developpez.com/t...php/mail/#L3.5

    PS : lorsque tu déclares une chaine de caractères en PHP utilise les simples quotes plutôt que les doubles (c'est plus rapide et ça te permet de ne pas avoir à échapper toutes les doubles quotes en HTML ce qui rend ton code bien plus lisible) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    echo '<form method="POST" action="index.php?op=envoyer" enctype="multipart/form-data">\n
    De :<input type="text" name="e_mail"><br />\n
    A :<input type="text" name="d_mail"><br />\n
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />\n
    Attachement :<input type="file" name="attachement[]" /><br />\n
    Attachement :<input type="file" name="attachement[]" /><br />\n
    Attachement :<input type="file" name="attachement[]" /><br />\n
    Sujet :<input type="text" name="sujet"><br />\n
    <textarea name="message" cols="20" rows="7"></textarea><br />\n
    <input type="submit" value="Envoyer">\n
    <input type="reset" value="Annuler">\n
    </form>\n';

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par trotters213
    PS : lorsque tu déclares une chaine de caractères en PHP utilise les simples quotes plutôt que les doubles (c'est plus rapide et ça te permet de ne pas avoir à échapper toutes les doubles quotes en HTML ce qui rend ton code bien plus lisible)
    Certes mais le \n ne sera pas interprété entre single quotes

  4. #4
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Citation Envoyé par julp
    Certes mais le \n ne sera pas interprété entre single quotes
    C'est vrai ce qui est encore mieux car tu n'as même pas besoin de mettre les \n pour mettre ton code source en page.

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut salam tout le monde
    le probleme n'est pas de la fonction saisir, qui affiche le formulaire html mais le prob est dans ma deusieme fonction car je n'arrive pas à reàevoir mes fichiers attachés completement et correctement..Je les reçois vides.

    Permettre de vosu dire que lien : http://a-pellegrini.developpez.com/t...php/mail/#L3.5 que tu m'as evoyé. Je l'ai deja visité, et le script d'envoi de fichier attaché ne fonctionne pas correctement ( il fonctionnent sans erreur mais je ne recois aucun msg ).

    Alors concentrer vous s'il vous plait à mon script car je veux pas etre un nomad dans les scripts, je veux créer mes propres scripts afin de les developper. Merci d'avance.

Discussions similaires

  1. mail avec plusieurs pièces jointes dans les tâches planifiées
    Par gretch dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 01/08/2014, 13h27
  2. envoi d'E-mail avec une pièce jointe
    Par adil54 dans le forum Langage
    Réponses: 4
    Dernier message: 11/07/2012, 13h58
  3. Réponses: 4
    Dernier message: 09/06/2010, 17h44
  4. Réponses: 6
    Dernier message: 14/11/2006, 10h35
  5. Envoi d'un mail avec plusieurs pièces jointes
    Par Wilco dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/04/2006, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo