Combien y a-t-il de parties dans un mail???
Il y en a trois. En premier, l'en-tête du mail indiquant qu'il y aura un fichier joint. Ensuite se trouvera le message du mail et pour finir, la pièce jointe.
<?php
$frontiere = 'ceciestunefrontierequineseretrouverajamaisdanslemail';
$en_tetes = "Reply-to:moi@mon_site.be\n";
$en_tetes .= "From: toi@ton_site.be\n";
$en_tetes .= "MIME-Version: 1.0\n";
Qu'est-ce que les types MIME?
Les types MIME servent à "décrire" le format du fichier. Pour du CSS par exemple, le type MIME est "test/css". Vous pourrez trouver une liste des types MIME à cet endroit
$en_tetes .= "Content-Type: multipart/mixed;\n";
$en_tetes .= " boundary=\"----=$frontiere\"\n\n";
$message = "------=$frontiere\n";
$message .= "Content-Type:text/plain; charset=\"ISO-8859-1\"\n";
$message .= "Content-Transfert-Encoding: 8bit\n\n";
//Maintenant, on passe au message
$message .= 'Ceci est un superbe mail avec une pièce jointe!!!';
$message .="\n\n";
$piece_jointe = "------=$frontiere\n";
$piece_jointe .= "Content-Type: application/pdf; name="acrobat.pdf"\n";
$piece_jointe .= "Content-Transfer-Encoding: base64\n";
$piece_jointe .= "Content-Disposition: attachment; filename="fichier_secret.pdf"\n\n";
$ouverture = fopen('acrobat.pdf', 'r');
//Pas besoin de plus de "pouvoir" que la lecture du fichier. Je mets donc "r".
$contenu = '';
while(!feof($ouverture)){
$contenu .= fgets($ouverture, 2048);
}
fclose($ouverture);
$contenu = base64_encode($contenu);
//Encodage au format base64
$contenu = chunk_split($contenu);
//On rend la pièce jointe conforme
$piece_jointe .= $contenu;
//Et on l'insère dans la variable.
$piece_jointe .= "\n\n\n------=$frontiere\n";
$mail = $message.$piece_jointe;
//On regroupe les deux morceaux en un seul.
mail('moi@mon_site.be', 'Mail avec pièce jointe', $mail, $en_tetes);
function mail_fichier($adresse, $sujet, $texte_mail, $fichier_joint, $mime){
$frontiere = 'ceciestunefrontierequineseretrouverajamaisdanslemail';
$en_tetes = "Reply-to:moi@mon_site.be\n";
$en_tetes .= "From: toi@ton_site.be\n";
$en_tetes .= "MIME-Version: 1.0\n";
$en_tetes .= "Content-Type: multipart/mixed;\n";
$en_tetes .= " boundary=\"----=$frontiere\"\n\n";
$message = "------=$frontiere\n";
$message .= "Content-Type:text/plain; charset=\"ISO-8859-1\"\n";
$message .= "Content-Transfert-Encoding: 8bit\n\n";
$message .= $texte_mail;
$message .="\n\n";
$piece_jointe = "------=$frontiere\n";
$piece_jointe .= "Content-Type: $mime; name=\"$fichier_joint\"\n";
$piece_jointe .= "Content-Transfer-Encoding: base64\n";
$piece_jointe .= "Content-Disposition: attachment; filename=\"$fichier_joint\"\n\n";
$ouverture = fopen($fichier_joint, 'r');
$contenu = '';
while(!feof($ouverture)){
$contenu .= fgets($ouverture, 2048);
}
fclose($ouverture);
$contenu = base64_encode($contenu);
$contenu = chunk_split($contenu);
$piece_jointe .= $contenu;
$piece_jointe .= "\n\n\n------=$frontiere\n";
$mail = $message.$piece_jointe;
mail($adresse, $sujet, $mail, $en_tetes);
}//Fin de la fonction