Pages :
Bonjour a tous

voila j'ai créer un petit site internet avec l'aide de beaucoup de personne que je remercie énormément mon problème est que je souhaitez faire un formulaire de contact avec pièce jointe

donc le coté HTML du formulaire pas de problème je l'ai fait il me convient super bien
mais du coté PHP j'ai un gros souci si quelqu'un pourrait m'aider ce serait sympa de sa part

je rempli le formulaire tous ce passe bien quand j'appuis sur envoyer voila mon message d'erreur :

Problème avec la pièce jointe.
Le mail n'a pas été envoyé


voiçi le code qui a était réaliser :

<?php
// On vérifie que le formulaire a été correctement rempli
if(isset($_POST['submit'])){

// On vérifie que les chanmps existent
if(isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['objet']) && isset($_POST['message']) && isset($_POST['email'])){

// si la réponse est positive, alors on récupère les valeurs à traiter
	
	$_nomExpediteur = $_POST['nom'];
	$_prenomExpediteur = $_POST['prenom'];
	$_objet = $_POST['objet'];
	$_messageExpediteur = $_POST['message'];
	$_emailExpediteur = $_POST['email'];
	
	echo "<br/>".$_prenomExpediteur."<br/>";
	
	// clé aléatoire de limite
	$_boundary = md5(uniqid(microtime(), TRUE));
	
	// headers des mails
	$_headers = 'From : '.$_nomExpediteur.' '.$_prenomExpediteur.'<'.$_emailExpediteur.'>'."\r\n".'Reply-To:'.$_emailExpediteur."\r\n".'X-Mailer  Smiley langue HP/'.phpversion();
	$_headers .= 'Ccc : Lucius SAHAJ <lesahaj@gmail.com>,'.$_nomExpediteur.' '.$_prenomExpediteur.'<'.$_emailExpediteur.'>'."\r\n";
	$_headers = 'Mime-Version: 1.0'."\r\n";
	$_headers .= 'Content-type: multipart/mixed;boundary='.$_boundary."\r\n";
	$_headers .= "\r\n";
	
	// encodage des caractères
	$_msg = 'Ceci est un mail automatique provenant de webmaster ANINF et est sous forme multipart/mixed';
	$_msg .= '--'.$_boundary."\r\n";
	$_msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
	$_msg .= 'Content-transfer-encoding:8bit'."\r\n";
	$_msg .= 'Test message avec une pièce jointe.'."\r\n";
	
	// au contenue de $_msg je vais ajouter le message du visiteur
	$_msg .= '--'.$_boundary."\r\n";
	$_msg .= $_messageExpediteur."\r\n";
	$_msg .= "\r\n";
	
	if (isset($_FILES['piecejointe']) && is_uploaded_file($_FILES['piecejointe']['temp_name'])){

	// on récupère les valeurs du fichier en piece jointe

	$_nomFichier =  $_FILES['piecejointe']['name'];           // Le nom original du fichier, comme sur le disque du visiteur (exemple : mon_icone.png).
	$_typeFichier =  $_FILES['piecejointe']['type'];          //  Le type du fichier. Par exemple, cela peut être « image/png ».
	$_tailleFichier =  $_FILES['piecejointe']['size'];         //   La taille du fichier en octets.
	
	// traitement du  fichier joint
	$_content = chunk_split(base64_encode(file_get_contents($_nomFichier)));
	
	// on attache les fichiers
	$_msg .= '--'.$_boundary."\r\n";
	$_msg .= 'Content-type:'.$_typeFichier.';name='.$_nomFichier."\r\n";
	$_msg .= 'Content-transfer-encoding:base64'."\r\n";
	$msg .= "Content-Disposition: attachment; filename=\"$_nomFichier\"\n\n";
	$_msg .= $content."\r\n";
	
	// fin de tous les traitements de fichiers
	$_msg .= '--'.$_boundary."\r\n";

	// Toutes les valeurs sont correctes alors on lance l'envoie du mail
	
	// @mail de destination des mails
	$_to = 'jim.devif@laposte.net';
	
	// On envoit le mail
	if(mail($_to, $_objet, $_message, $_headers)){
		echo "Votre mail a bien &eacute;t&eacute; envoy&eacute; nous vous r&eacute;pondrons dans les plus bref d&eacute;lais. <br><p> Merci de votre visite</p>";
	}
	else echo "L'envoie du dossier a &eacute;chou&eacute;<br/>";
	}
	else echo "Probl&egrave;me avec la pi&egrave;ce jointe. <br/>Le mail n'a pas &eacute;t&eacute; envoy&eacute; ";
}
else echo "Remplissez correctement le formulaire";
}
?>


s'il vous plait besoin d'aide Smiley decu
salut,
déjà dans les entêtes, je ne connais pas "Ccc" ? Il y a "Cc" ou "Bcc" mais à ma connaissance pas de "Ccc".
À la fin des entêtes, il faut un double retour à la ligne "\r\n\r\n" et à la fin du message, il faut indiquer que c'est la fin en ajoutant un double tiret :

$_msg .= '--'.$_boundary."--";

Si ça coince toujours, tu peux essayer avec un autre délimiteur :

$_boundary = "-----=". md5(uniqid(mt_rand()));
Salut,

Ton message d'erreur apparaît quand cette condition n'est pas vérifiée :
if (isset($_FILES['piecejointe']) && is_uploaded_file($_FILES['piecejointe']['temp_name']))
donc déjà c'est là qu'il faut que tu concentres tes recherches.

À mon avis, c'est simplement parce que c'est pas ['temp_name'] mais ['tmp_name'] qu'il faut utiliser.
Bonjour

je vous remercie tous beaucoup de m'apporter votre aide

je vais essayer tous ce que vous m'avait conseiller de faire et je reviens vous dire si cela marche ou pas

encore merci
Re Bonjour a tous


alors voila j'ai fait ce que Marcv ma conseiller ['tmp_name']
maintenant sa marche je reçoit bien un mail mais par contre je reçoit que l'objet du mail

pas le nom , pas le prénom , pas de pièce jointe ( pourtant j'ai envoyer une image )
pas le message ( sa me dit que le message n'a pas de contenu texte )

j'ai pourtant tout remplie mais j'ai reçu que l'objet du mail

je suis vraiment désoler de vous faire perdre un peu de temp c'est vrai que j'essaie de me débrouiller je regarde beaucoup de tutoriel mais la je comprend absolument pas
Modérateur
Bonjour, à quoi ressemble le mail final ainsi produit?

De manière générale, il faut parfois aller plus loin que la norme pour garantir une meilleure compatibilité:

- Même si ce n'est pas nécessaire selon les RFC, utiliser la bonne casse pour les en-têtes: Content-Type au lieu de Content-type, etc.
- Utiliser deux fins de ligne avant une nouvelle boundary et après la fin des headers (\r\n\r\n)
- terminer la dernière boundary par "--"

    MIME-Version: 1.0
    Content-Type: multipart/mixed;
              boundary="Multipart Fri Jun 27 16:58:44 1997"
    Content-Transfer-Encoding: 7bit

    --Multipart Fri Jun 27 16:58:44 1997
    Content-Type: text/plain; charset=ISO-8859-1
    Content-Transfer-Encoding: 8bit

    Dit is het eerste deel : tekst

    --Multipart Fri Jun 27 16:58:44 1997
    Content-Type: image/gif
    Content-Transfer-Encoding: base64

    R0lGODlhiQCWAIcAAAAAAAAAMwAAZgAAmQAA
    zAAA/zMAADMAMzMAZjMAmTMAzDMA/2YAAGYA
    ...

    --Multipart Fri Jun 27 16:58:44 1997
    Content-Type: text/plain; charset=ISO-8859-1
    Content-Transfer-Encoding: 8bit

    Dit is het laatste deel.

    --Multipart Fri Jun 27 16:58:44 1997--


Sinon il y a un $msg au lieu de $_msg qui traîne.

Si il y a toujours des problèmes il convient d'analyser la source du message reçu, afin de vérifier que les fins de ligne sont correctes ainsi que le formatage.
Alors j'ai essayer pratiquement tous les conseils de chacun 1 par 1
et sa ne change rien je reçoit que l'objet de mon mail je comprend pas bien pourquoi

dans mon formulaire tous ce que je tape dans objet je reçoit parfaitement
mais tous le reste est vide pièce jointe message nom et prénom ne s'envoie pas

c'est quand même fou cette histoire ..
SAlut...

Au delà du concept "j'apprend à envoyer des mails"..

pourquoi ne pas utiliser la class PHPMailer ???

c'est simple à utiliser, tu pourras faire les meme if d'existance avant d'envoyer et ton mail partira complet !
Salut

j'ai déjà tester avec PHPMailer mais je n'arrive pas non plus a avoir ma pièce jointe ( image )

ce que je voulait c'est simplement qu'on puisse m'envoyer un mail avec une pièce jointe en image ainsi qu'un petit message mais je penser pas que c'était si prise de tête Smiley decu
Modérateur
ryfu a écrit :
Alors j'ai essayer pratiquement tous les conseils de chacun 1 par 1
et sa ne change rien je reçoit que l'objet de mon mail je comprend pas bien pourquoi

dans mon formulaire tous ce que je tape dans objet je reçoit parfaitement
mais tous le reste est vide pièce jointe message nom et prénom ne s'envoie pas

c'est quand même fou cette histoire ..

C'est pour cela qu'il faut consulter la source du mail reçu pour identifier si ce n'est pas un problème tiers et constater que la construction du mail est correctement effectuée. Peux-tu nous produire cette source?
Voila la source du mon mail j’espère que c'est bien sa que vous voulez Smiley ohwell

Return-Path: bounce-id=D345=U3391.xxlplan.ovh.net=1418292730357306491@56.mail-out.ovh.net
Received: from 10.128.63.19 (LHLO lpn-prd-vrin018) (10.128.63.19) by
lpn-prd-mstr121 with LMTP; Thu, 11 Dec 2014 11:12:18 +0100 (CET)
Received: from lpn-prd-vrin018 (localhost [127.0.0.1])
by lpn-prd-vrin018 (Postfix) with ESMTP id A8560144017D
for <jim.devif@laposte.net>; Thu, 11 Dec 2014 11:12:18 +0100 (CET)
Received: from mo152.mail-out.ovh.net (7.mo152.mail-out.ovh.net [46.105.55.234])
by lpn-prd-vrin018 (Postfix) with ESMTP id 9A24D14400FC
for <jim.devif@laposte.net>; Thu, 11 Dec 2014 11:12:18 +0100 (CET)
Received: from 56.mail-out.ovh.net (unknown [10.71.14.218])
by mo152.mail-out.ovh.net (Postfix) with SMTP id C0619FF8795
for <jim.devif@laposte.net>; Thu, 11 Dec 2014 11:12:13 +0100 (CET)
Received: (qmail 31180 invoked by uid 0); 11 Dec 2014 10:12:16 -0000
Received: from gwc02.ovh.net (HELO xxlplan.ovh.net) (213.251.182.11)
by 56.mail-out.ovh.net with SMTP; 11 Dec 2014 10:12:10 -0000
Received: from localhost.localdomain (localhost [127.0.0.1])
by localhost.domain.tld (Postfix) with ESMTP id 98236441FB
for <jim.devif@laposte.net>; Thu, 11 Dec 2014 11:12:07 +0100 (CET)
Received: by xxlplan.ovh.net (Postfix, from userid 3391)
id 8A1014425F; Thu, 11 Dec 2014 11:12:07 +0100 (CET)
To: jim.devif@laposte.net
Subject: coucou
Mime-Version: 1.0
Content-Type: multipart/mixed;boundary=7e5df30151dcd0a445d8b6aea3ef79f5
Message-Id: <20141211101207.8A1014425F@xxlplan.ovh.net>
Date: Thu, 11 Dec 2014 11:12:07 +0100 (CET)
From: lesbonnes@xxlplan.ovh.net (lesbonnes)
X-Ovh-Tracer-Id: 7924646496319865066
X-VR-SPAMSTATE: OK
X-VR-SPAMSCORE: 50
X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrfeejiedrgeefucetufdoteggodetrfcurfhrohhfihhlvgemucfqggfjnecuuegrihhlohhuthemuceftddtnecugfhmphhthicusghougihucdlhedtmd
X-VR-FullState: 0
X-VR-Score: 50
X-VR-Cause-1: gggruggvucftvghtrhhoucdtuddrfeejiedrgeefgddutdcutefuodetggdotefrucfrrhhofhhilhgv
X-VR-Cause-2: mecunfetrffquffvgfenuceurghilhhouhhtmecuhedttdenucfgmhhpthihucgsohguhiculdehtddm
X-VR-Cause-3: necujfgurhepvffugggtkfffhfesmhdttdertddttdenucfhrhhomheplhgvshgsohhnnhgvshesgiig
X-VR-Cause-4: lhhplhgrnhdrohhvhhdrnhgvthculdhlvghssghonhhnvghsmd
X-VR-AvState: No
X-VR-State: 0
Ok Smiley smile

je joue pas mal avec la fonction mail depuis longtemps, et j'ai une fonction que j'ai écris qui s'occupe de balancer un mail avec une ou X pièces jointes...

à la lecture de ton code je vois un petit détail

a écrit :
$_msg .= 'Content-type:'.$_typeFichier.';name='.$_nomFichier."\r\n";

$_nomFichier DOIT être entre " "

donc tu devrais écrire comme ça

$_msg .= 'Content-type:'.$_typeFichier.';name="'.$_nomFichier.'"\r\n';


sinon si tu as essayé avec php mailer.. vu que la class est bien faite et que tu ne gère pas les infos directement .. es tu sur d'avoir l'image ??
Merci beaucoup pour vos réponses

je vais essayer sa après manger et je vous tiens au courant tout de suite après

et l'image que je prend pour faire le test c'est une image qui se trouve sur mon bureau au format PNG
En fin de compte j'était presser d’essayer ce que vous m'avez dit Smiley biggrin

j'ai donc remplaçé par
$_msg .= 'Content-type:'.$_typeFichier.';name="'.$_nomFichier.'"\r\n';


mais sa ne fonctionne toujours pas mon mail n'a pas de contenu texte et pas de pièce jointe non plus
AHAH non mais lol Smiley smile

as tu remarqué que tu construit $_msg et que dans la fonction mail tu envoi $_message ????

je viens seulement de le voir Smiley smile
Ree

je sait que je suis vraiment pas doué du tout en PHP merci de me le rappelez mdr
il faut que je modifie comment alors stp ?
J'ai essayer de mettre autres chose a la place de $_message

mais y'a carrément plus rien qui se passe quand j'appuis sur envoyer Smiley fache Smiley bawling
faut pas mettre autre chose à l aplace de $_message il faut mettre : $_msg tout simplement Smiley smile
Pages :