Ajout de pièce jointe dans un mail - PHP - Programmation
Marsh Posté le 28-02-2011 à 11:24:40
Bonjour,
L'en-tête me parait trop simpliste.
D'abord, il n'est pas très propre de mettre Content-type dans $from.
Ensuite, il manque l'indication multipart et sans doute d'autres aussi.
(le multipart qu'il faut aussi le marquer dans l'en-tête du mail n'a rien à voir avec le multipart pour le form)
Et comme ce sera un mail multipart, il faudra un en-tête pour chaque partie.
Les fichiers Word pouvant contenir des données non-Ascii, il est conseillé de définir un Content-Transfer-Encoding, voir http://en.wikipedia.org/wiki/MIME
Pour faire un test, essayez d'abord avec un fichier texte simple.
Dans la documentation de PHP, http://fr.php.net/manual/fr/function.mail.php, vous trouverez des exemples.
Par exemple, voyez la note de akam du 28-May-2008 03:55, et la note de jdephix du 02-Mar-2005 09:25.
Marsh Posté le 28-02-2011 à 10:53:11
Bonjour à tous !
Je viens vers vous suite à un problème, dont je ne pensais pas que ça allait en être un, celui de l'envoi de pièce jointe par mail, via un formulaire en ligne. Je propose un formulaire à l'utilisateur qui lui permet de me contacter, en joignant son CV (et sa lettre de motivation, mais c'est le même principe je suppose).
L'envoi de mail marche très bien, mais joindre le CV que l'utilisateur propose est un enfer, je suis dessus depuis 2j sans succès
J'ai trouvé des pistes comme quoi il faudrait d'abord héberger le fichier sur le serveur à l'aide de move_uploaded_file, puis ensuite le joindre au message mais ... j'ai essayé bien des méthodes, sans succès.
Halte au blabla, place au code pour vous donner de l'inspiration :
HTML :
<form enctype="multipart/form-data" action="index.php?menu=postuler_envoi" method="POST" name="postuler" style='padding:5px;border:2px solid Crimson;width:600px;' onSubmit="return verif_postuler();" onReset="return confirm('Voulez-vous vraiment réinitialiser les données ?');">
<table>
<tr>
<td>Nom : <input type='text' name='nom'>
<tr>
<td>Prénom : <input type='text' name='prenom'>
<tr>
<td>Mail : <input type='text' name='mail'>
<tr>
<td>CV : <input type='file' name='cv'>
<tr>
<td>Lettre de motivation : <input type='file' name='lettre'><br /><br />
<tr>
<td>Veuillez cocher les thématiques souhaitées :<br />
<input type="checkbox" name="theme[]" value="culture" />Culture
<input type="checkbox" name="theme[]" value="sports" />Sports
<input type="checkbox" name="theme[]" value="citoyennete" />Citoyenneté<br />
<input type="checkbox" name="theme[]" value="loisirs" />Loisirs
<input type="checkbox" name="theme[]" value="solidarite" />Solidarité
<input type="checkbox" name="theme[]" value="environnement" />Environnement
<tr>
<td>
<input type='submit' value='Envoyer'>
<input type='reset' value='Réinitialiser'>
</table>
</form>
Traitement PHP :
<?php if(!empty($_POST['postuler']))
{
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$mail = $_POST['mail'];
$themes = "";
foreach ($theme as $choix)
{
$themes = $themes . " - " . "<b>" . $choix . "</b>";
}
$themes = $themes . " - ";
move_uploaded_file($_FILES['cv']['tmp_name'], "./telechargements".$_FILES['cv']['name']);
$destinataire = "alexandre.toupet@wanadoo.fr";
$sujet = "$nom $prenom - Candidature";
$from = "From:$mail\n";
$from .= "MIME-version: 1.0\n";
$from .= "Content-type: text/html; charset= iso-8859-1\n";
$message = "Candidature Service Civique de : <b>$nom $prenom</b> <br /><br />
Thème(s) sélectionné(s) : <b>$themes</b><br /><br />
Ci-joints : CV + Lettre de motivation du candidat.";
}
mail($destinataire,$sujet,$message,$from);?>
Voilà, comme vous pouvez le voir, j'essaie là juste de copier le fichier sur le serveur, et cela ne marche pas. Cela vient il d'un problème de syntaxe ? Propre au serveur ? Autre ? (A noter que j'ai fait un chmod 777 au dossier cible -telechargement-
Merci à toutes celles et ceux qui s'intéresseront à mon problème et me permettront de mener à bien mon script !