Joindre un fichier automatiquement en PHP.

Yakurena -  
 hssine -
Bonjour,
J'aimerais savoir s'il existe une fonction PHP pour mettre automatiquement un fichier en pièce jointe lorsqu'on clique sur un lien ouvrant une fenetre de mail. Est-ce que c'est possible avec la fonction mailto de PHP,ou faut-il procéder autrement?
Merci d'avance.

1 réponse

  1. hssine
     
    Voici le code complet, tu n'as qu'a remplacer le fichier par le tien et ca marche nikel .

    <html>
    <body>
    <?php

    //----------------------------------
    // Construction de l'entête
    //----------------------------------
    // On choisi généralement de construire une frontière générée aleatoirement
    // comme suit. (REM: je n'en connais pas la raison profonde)
    $boundary = "-----=".md5(uniqid(rand()));

    // Ici, on construit un entête contenant les informations
    // minimales requises.
    // Version du format MIME utilisé
    $header = "MIME-Version: 1.0\r\n";
    // Type de contenu. Ici plusieurs parties de type different "multipart/mixed"
    // Avec un frontière définie par $boundary
    $header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    $header .= "\r\n";
    $header .= "Content-Type: text/plain; charset=utf-8\r\n";
    //--------------------------------------------------
    // Construction du message proprement dit
    //--------------------------------------------------

    // Pour le cas, où le logiciel de mail du destinataire
    // n'est pas capable de lire le format MIME de cette version
    // Il est de bon ton de l'en informer
    // REM: Ce message n'apparaît pas pour les logiciels sachant lire ce format
    $msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";

    //---------------------------------
    // 1ère partie du message
    // Le texte
    //---------------------------------
    // Chaque partie du message est séparé par une frontière
    //$msg .= "--$boundary\r\n";

    // Et pour chaque partie on en indique le type
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
    // Et comment il sera codé
    //$msg .= "Content-Transfer-Encoding:8bit\r\n";
    // Il est indispensable d'introduire une ligne vide entre l'entête et le texte
    $msg .= "\r\n";
    // Enfin, on peut écrire le texte de la 1ère partie
    $msg .= "Ceci est un mail avec un fichier joint\r\n";
    $msg .= "\r\n";

    //---------------------------------
    // 2nde partie du message
    // Le fichier
    //---------------------------------
    // Tout d'abord lire le contenu du fichier
    $file = "test.txt";
    $fp = fopen($file, "rb"); // b c'est pour les windowsiens
    $attachment = fread($fp, filesize($file));
    fclose($fp);

    // puis convertir le contenu du fichier en une chaîne de caractère
    // certe totalement illisible mais sans caractères exotiques
    // et avec des retours à la ligne tout les 76 caractères
    // pour être conforme au format RFC 2045
    //$attachment = chunk_split(base64_encode($attachment));
    //$attachment = chunk_split($attachment);
    // Ne pas oublier que chaque partie du message est séparé par une frontière
    $msg .= "--$boundary\r\n";
    // Et pour chaque partie on en indique le type
    //$msg .= "Content-Type: image/gif; name=\"$file\"\r\n";
    $msg .= "Content-Type: text/plain;charset=utf-8\r\n;name=\"$file\"\r\n";
    #$msg="Content-Type: text/plain; charset=utf-8\r\n";
    // Et comment il sera codé
    //$msg .= "Content-Transfer-Encoding: base64\r\n";
    // Petit plus pour les fichiers joints
    // Il est possible de demander à ce que le fichier
    // soit si possible affiché dans le corps du mail
    $msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
    // Il est indispensable d'introduire une ligne vide entre l'entête et le texte
    $msg .= "\r\n";
    // C'est ici que l'on insère le code du fichier lu
    $msg .= $attachment . "\r\n";
    $msg .= "\r\n\r\n";

    // voilà, on indique la fin par une nouvelle frontière
    $msg .= "--$boundary--\r\n";

    $destinataire = "hssine@edcom.fr";
    $expediteur = "saissi_hssine@hotmail.com";
    $reponse = $expediteur;
    echo "Ce script envoie un mail avec fichier attaché à $expediteur";
    $a=ini_set("SMTP","smtp.orange.fr");
    mail($destinataire, "test", $msg,
    "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);
    ?>
    </body>
    </html>

    5