Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Après avoir essayé plusieurs scénarios infructueux, j'ai trouvé sur Wikipedia (article sur MIME) que si l'on a un message à plusieurs parties, il est normal d'avoir plusieurs "Content-type", donc plusieurs "Charset".
Dès qu'un "Charset" est dans la partie "Header", le mail n'est pas envoyé correctement. Si on l'ôte, ça fonctionne sauf le problème des accents qui sont mal interprétés. Comment faire pour terminer ce formulaire?
Salutations
C. Rossat
Salut,
ça n'est pas ça. Quand on ajoute le charset=\"ISO-8859-1\" pour la variable header, le problème apparaît. Nous avons re-testé, en ôtant le charset, l'email est correct. Seul le problème d'accent subsiste.
Salutations
C. Rossat
Hello,
Voici un bout du code qui fonctionnait bien au niveau de l'envoi avant que l'on ajoute le charset dans le content-type:
Bonjour,
Merci pour votre réponse, mais maintenant l'email n'est pas généré correctement sous Outlook.
Le code que j'ai mis est:
$header.= "Content-Type: multipart/mixed; charset=\"iso-8859-1\"".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
Je reçois ceci:
Confirmation de votre commande
Boulangerie Pâtisserie Bessa [webmaster@boulangeriepatisseriebessa.ch]
-------=59c2bc360c3ef3ba2ff934e56d16bbaa
Content-Type: multipart/alternative;
boundary="-----=6281fc52e26ec15a40ac13ba7159c254"
-------=6281fc52e26ec15a40ac13ba7159c254
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
-------=6281fc52e26ec15a40ac13ba7159c254
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
<html><head></head><body><b>Récapitulatif de votre commande</b><br/><br/> <table width="600" border="0" cellpadding="1" cellspacing="0" style="width: 600px;">
<tbody>
<tr>
<td width="160" style="text-align: justify;">
Distribution</td>
<td width="240" style="text-align: justify;">
asd </td>
</tr>
<tr>
<td style="text-align: justify;">
Jour / Date</td>
<td style="text-align: justify;">
/ </td>
</tr>
<tr>
<td style="text-align: justify;">
Kg</td>
<td style="text-align: justify;">
</td>
</tr>
<tr>
<td style="text-align: justify;">
Format</td>
<td style="text-align: justify;">
</td>
</tr>
<tr>
<td style="text-align: justify;">
Saveur</td>
<td style="text-align: justify;">
</td>
</tr>
<tr>
<td style="text-align: justify;">
Type d'événement</td>
<td style="text-align: justify;">
</td>
</tr>
<tr>
<td style="text-align: justify;">
Age</td>
<td style="text-align: justify;">
</td>
</tr>
<tr>
<td style="text-align: justify;">
Prénom *</td>
<td style="text-align: justify;">
asd</td>
</tr>
<tr>
<td style="text-align: justify;">
Nom *</td>
<td style="text-align: justify;">
asd</td>
</tr>
<tr>
<td style="text-align: justify;">
Adresse *</td>
<td style="text-align: justify;">
asd</td>
</tr>
<tr>
<td style="text-align: justify;">
NPA / Ville *</td>
<td style="text-align: justify;">
asd / asd</td>
</tr>
<tr>
<td style="text-align: justify;">
Email *</td>
<td style="text-align: justify;">
c.rossat@gmail.com</td>
</tr>
<tr>
<td style="text-align: justify;">
Téléphone *</td>
<td style="text-align: justify;">
asd</td>
</tr>
<tr>
<td style="vertical-align:top">
Commentaires * </td>
<td style="text-align: justify;">
asd</td>
</tr>
</tbody>
</table>
</body></html>
-------=6281fc52e26ec15a40ac13ba7159c254--
-------=59c2bc360c3ef3ba2ff934e56d16bbaa
Content-Type: ; name=""
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=""
-------=59c2bc360c3ef3ba2ff934e56d16bbaa--
-------
Salutations
C. Rossat
Bonjour,
J'ai repris et adapté un formulaire qui permet l'envoi de pièces jointes. A la réception, nous avons ceci:
Confirmation de votre commande
Boulangerie Pâtisserie Bessa [webmaster@boulangeriepatisseriebessa.ch]
Le â ne passe paset devient â.
Le code de la ligne est:
//=====Création du header de l'e-mail
$header = "From: \"Boulangerie Pâtisserie Bessa\"<webmaster@boulangeriepatisseriebessa.ch>".$passage_ligne;
$header.= "Reply-to: \"Boulangerie Pâtisserie Bessa\" <webmaster@boulangeriepatisseriebessa.ch>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
Quelqu'un peut-il me dire quoi faire?
Salutations
C. Rossat
Merci,
En effet, j'ai utilisé maintenant move_uploaded_file() et le fichier est bien uploadé. Mais le message d'erreur subsiste.
Warning: fopen() [function.fopen]: Filename cannot be empty in /home/www/d535fb38b1eca95aa12713ac33940cbd/web/form_file3.php on line 49
(toujours la même ligne $fichier1 = fopen($fichier, "r" );
La faute doit être dans le code qui me permet d'aller chercher le fichier dans le dossier temporaire upload/, mais je ne vois pas où.
Pouvez-vous m'aider à avancer d'un pas?
J'ai conservé la suite du code telle quelle, en adaptant le nom des variables.
Pour rappel, dans le formulaire, les 2 dernières lignes sont:
Fichier : <input maxlength="60" name="fichier" size="40" type="file" /><br /><br />
<input name="upload" type="submit" value="Envoyer" /></form>
et le code php est:
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$mail = $_POST['mail'];
$commentaires= $_POST['commentaires'];
$fichier=$_POST['fichier'];
$upload=$_POST['upload'];
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'upload/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') &&
!strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
echo "Le fichier a bien été uploadé";
}
//=====Déclaration des messages au format texte et au format HTML
$message_txt ="Nom : ";
$message_html = "<html><head></head><body><b>Données pour la demande d'accès</b>,<br><br> <b>Nom :</b> $nom <br> <b>Prenom :</b> $prenom <br> <b>Email: </b> $mail </body></html>";
//==========
//=====Lecture et mise en forme de la pièce jointe
$fichier1 = fopen($fichier, "r" );
$attachement = fread($fichier1, filesize($fichier));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
//=====Définition du sujet
$sujet = "Hey mon ami !";
//=========
//=====Création du header de l'e-mail
$header = "From: \"WeaponsB\"<.....@skynet.be>\n";
$header.= "Reply-to: \"WeaponsB\" <......@skynet.be>\n";
$header.= "MIME-Version: 1.0\n";
$header.= "Content-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
//==========
//=====Création du message
$message = "\n--".$boundary."\n";
$message.= "Content-Type: multipart/alternative;\n boundary=\"$boundary_alt\"\n";
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format texte
$message.="Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_txt."\n";
//==========
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format HTML
$message.="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_html."\n";
//==========
//=====On ferme la boundary alternative
$message.= "\n--".$boundary_alt."--\n";
//==========
$message.= "\n--".$boundary."\n";
//=====Ajout de la pièce jointe
$message.= "Content-Type: application/pdf;\n name=\"$fichier\"\n";
$message.= "Content-Transfer-Encoding: base64\n";
$message.= "Content-Disposition: attachment;\n filename=\"$fichier\"\n";
$message.= "\n".$attachement."\n\n";
$message.= "\n--".$boundary."--\n";
//==========
//=====Envoi de l'e-mail
mail("test@test.com",$sujet,$message,$header);
Salutations
Christian
Bonjour,
Lorsque je mets des données dans le formulaire et que je l'envoie, j'obtiens le message d'erreur suivant:
Warning: fopen(pdf_leger.jpg) [function.fopen]: failed to open stream: No such file or directory in /home/www/d535fb38b1eca95aa12713ac33940cbd/web/form_file2.php on line 21
Pour info, la ligne 21 est: $fichier = fopen($scan, "r" ); dans le fichier form_file2.php un peu plus bas dans le texte.
Le code du formulaire est:
<form action="form_file2.php" method="post" name="formulaire">
Nom : <input maxlength="50" name="nom" size="30" type="text" />
Prénom : <input maxlength="50" name="prenom" size="30" type="text" />
E-mail : <input maxlength="50" name="mail" size="30" type="text" />
Commentaires :<textarea cols="30" name="commentaires" rows="6" wrap="soft"></textarea>
Fichier : <input maxlength="60" name="scan" size="40" type="file" />
Le fichier form_file2.php:
<?php
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$mail = $_POST['mail'];
$commentaires= $_POST['commentaires'];
$scan=$_post['scan'];
echo"nom: $nom<br>"; // Rajouté pour voir le contenu des variables
echo"prenom: $prenom<br>"; // Rajouté pour voir le contenu des variables
echo"mail: $mail<br>"; // Rajouté pour voir le contenu des variables
echo"commentaires: $commentaires<br>"; // Rajouté pour voir le contenu des variables
echo"scan: $scan<br>"; // Rajouté pour voir le contenu des variables
//=====Déclaration des messages au format texte et au format HTML
$message_txt ="Nom : ";
$message_html = "<html><head></head><body><b>Données pour la demande d'accès</b>,<br><br> <b>Nom :</b> $nom <br> <b>Prenom :</b> $prenom <br> <b>Email: </b> $mail </body></html>";
//==========
//=====Lecture et mise en forme de la pièce jointe
$fichier = fopen($scan, "r" );
$attachement = fread($fichier, filesize($scan));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
//=====Définition du sujet
$sujet = "Hey mon ami !";
//=========
//=====Création du header de l'e-mail
$header = "From: \"WeaponsB\"<.....@skynet.be>\n";
$header.= "Reply-to: \"WeaponsB\" <......@skynet.be>\n";
$header.= "MIME-Version: 1.0\n";
$header.= "Content-Type: multipart/mixed;\n boundary=\"$boundary\"\n";
//==========
//=====Création du message
$message = "\n--".$boundary."\n";
$message.= "Content-Type: multipart/alternative;\n boundary=\"$boundary_alt\"\n";
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format texte
$message.="Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_txt."\n";
//==========
$message.= "\n--".$boundary_alt."\n";
//=====Ajout du message au format HTML
$message.="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
$message.="Content-Transfer-Encoding: 8bit\n";
$message.= $message_html."\n";
//==========
//=====On ferme la boundary alternative
$message.= "\n--".$boundary_alt."--\n";
//==========
$message.= "\n--".$boundary."\n";
//=====Ajout de la pièce jointe
$message.= "Content-Type: application/pdf;\n name=\"$scan\"\n";
$message.= "Content-Transfer-Encoding: base64\n";
$message.= "Content-Disposition: attachment;\n filename=\"$scan\"\n";
$message.= "\n".$attachement."\n\n";
$message.= "\n--".$boundary."--\n";
//==========
//=====Envoi de l'e-mail
mail("......@hotmail.com",$sujet,$message,$header);
//==========
?>
Merci et salutations
Christian
Pages : 1