Piéce jointe email dans code PHP

Fermé
iris72 Messages postés 18 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 25 avril 2012 - 25 avril 2012 à 12:52
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 25 avril 2012 à 16:44
Bonjour à tous,

J'ai un probléme, voici mon fichier PHP qui permet l'envoi d'email avec piéce jointe, le probléme est qu'il m'est impossible de chager la piéce jointe, pour quels raisons je ne sais pas, j'ai peu être uné idée.

La ligne: $fichierr = "adresses.txt"; doit se confondre avec la ligne:

$pieceJointe = $_FILES['fichier'];


Merci d'avance




<!doctype html>
<html>
<head>
</head>
<body align="center">
        <?php
                if($_POST)
        ?>
        <form name="formule" action="messagerie(1).php" method="POST" enctype="multipart/form-data"> <!--Formulaire -->
        <table>
                <tr>
                        <td>Objet</td> <!-- Objet dans formulaire-->
                        <td align="right"><input name="objet" type="text"/></td> //Ligne pour écrire l'objet
                        <td rowspan="10" valign="top" align="left"> <!--Colonnes des adresses mails-->
                        <?php
                                $email = ""; //Création variable emhttp://www.lesite.net/forum/affich-21 ... ec-mailail
                                $fichierr = "adresses.txt"; //Nom du fichier contenant les adresses
                                $donnees = fopen($fichierr,"r"); //Ouverture du fichier contenant les adresses => "r" = en lecture
                                $chaine = fread($donnees, filesize($fichier)); //Récupération des données du fichier
                                fclose($donnees);//Fermeture du fichier
                                $pos1 = 0; // Position du début de la chaine
                                $last = true; //Variable pour savoir si l'on est a la fin du fichier
                                while($last) //Boucle jusqu'à ce qu'on ateigne la fin de la chaine (Tant que)
                                {
                                        if($pos2 = strpos($chaine, ";", $pos1)) //Detection de la position du caractère de séparation des adresses
                                                $taille = $pos2 - $pos1; //Variable contenant la taille de la chaine contenant UNE adresse mail
                                        else
                                        {
                                                $taille = strlen($chaine);
                                                $last = false; //Prend false pour arrêter la boucle while
                                        }
                                        $contact = substr($chaine, $pos1, $taille); //Récuperd toutes les informations sur le contact
                                        $pos1 = $pos2 + 1; //Nouvelle position du début de la recherche dans la chaine (avec ; puis passage à la suivante)
                                        $pos3 = strrpos($contact, " "); //Detection de la position du dernier espace séparant le nom du contact de son adresse mail
                                        $nom = substr($contact, 0, $pos3); //Découpage de la chaine pour récupérer le nom , $pos3 = position de l'espace entre contact et adresse mail
                                        $adresse = substr($contact, $pos3 + 1); //Découpage de la chaine pour récupérer l'adresse mail
 
 
                                        $checkBoxAdresse = str_replace(".",",",$adresse); //Remplace les virgules par des points dans l'adresse
                                        $checkBoxAdresse = str_replace("
","",$checkBoxAdresse); //Supprime le caractère "Entrée"
 
 
                                        if(isset($_POST[$checkBoxAdresse]))//Si il y a un retour du formulaire avec l'adresse contenu dans $checkBoxAdressse éxécution du code ci dessous
                                        {
                                                $email = $email.$nom.' < '; //mise en place des balises pour l'envoi du mail
                                                $email = $email.$adresse.' >, ';
                                        }
                                        echo '<input name="'.$checkBoxAdresse.'" type="checkbox">'.$nom.'<br>
                                        '; // mise en place des checkBox
                                }
                                if(isset($_POST['objet']) && isset($_POST['message'])) //Teste s'il y a l'envoit d'un objet et d'un message
                                {
                                        $objet = $_POST['objet']; //Récuperation de l'objet du message
                                        $message = $_POST['message']; //Récuperation du message
                                        if(isset($_FILES['fichier'])) //Vérification si $_FILES['fichier'])existe
                                        {
                                                $pieceJointe = $_FILES['fichier']; //Récupération du fichier
                                                $corps = $message.$pieceJointe; //Ajout du fichier au message
                                        }
                                        else
                                                $corps = $message;  //Insertion de message
                                        $headers = 'From: Nom Prénom <adresse@exemple.com>'; //Nom de la personne qui envoie l'email
                                        mail($email, $objet, $corps, $headers); //Envois du mail
                                }
 
 
                        ?>
 
                        </td>
                </tr>
                <tr>
                        <td><input type="file" name="fichier"/></td>
                </tr>
                <tr>
                        <td>Message</td>
                </tr>
                <tr>
                        <td colspan="2"><textarea name="message" id="message" cols="50" rows="10" style="color:grey"></textarea></td>
                </tr>
        </table>
        <input type="submit" value="Envoyer"/>
        </form>
</body>
</html>


A voir également:

1 réponse

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
25 avril 2012 à 16:44
$_FILES['fichier'] est un array avec plusieurs index dont name

donc pour avoir le nom du fichier $_FILES['fichier']['name']

de plus:
$pieceJointe = $_FILES['fichier']; //Récupération du fichier
$corps = $message.$pieceJointe; //Ajout du fichier au message


ça c'est pas bon

il faut que tu ailles voir sur Google comment faire un fichier joint

il faut d'abord le faire uploader sur le serveur, puis faire des boundary dans ton mail , tout ça dans le script php bien sur
0