8791 sujets

Développement web côté serveur, CMS

Bonjour, bonsoir,

J'ai un gros souci avec ma fonction mail.
Pour précision ce code est dans <racine>/php/traitement.php
Ce script php est appelé par un form depuis une page php, située à la racine.
Peut-être est-il bon de savoir que le domaine est hébergé en ftp passif.
Précision encore, je suis sur one.com.

Toujours est-il que ce script ne fonctionne pas
j'ai toujours $resultat = false !
Pourquoi ?
Pouvez-vous m'aider, svp ?


	date_default_timezone_set('Europe/Brussels');
	$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"); 
	$mois = array("","Janvier",utf8_encode("Février"),"Mars","Avril","Mai","Juin","Juillet",utf8_encode("Août"),"Septembre","Octobre","Novembre",utf8_encode("Décembre"));

	$datefr = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y");
	$heurefr = "- ".date("H:i:s");
	
	$nom = $_POST['nom'];
	$prenom = $_POST['prenom'];
	$email = $_POST['email'];
	$etablissement = $_POST['etablissement'];
	$secteur = $_POST['secteur'];
	$message = $_POST['message'];
	
	$nom = strtoupper(strtolower($nom));
	$prenom = ucwords(strtolower($prenom));
	$etablissement = ucwords(strtolower($etablissement));
	$secteur = ucwords(strtolower($secteur));
	
	$destinataire1 = "info@truc.com";
	$objet1 = "Demande de Renseignements  www.truc.com";
 
	
	$msg = "\n";
	$msg .= "============================================================================\n";
	$msg .= "Message provenant de\n";
	$msg .= "\n";
	$msg .= ">>> Contact       : $nom $prenom\n";
	$msg .= "Etablissement     : $etablissement\n";
	$msg .= "Secteur Activités : $secteur\n";
	$msg .= "\n";
	$msg .= "Email : $email\n";
	$msg .= "\n\n";
	$msg .= "Message :\n";
	$msg .= "$message\n";
	$msg .= "\n";
	$msg .= "============================================================================\n";
	$msg .= "\n";
	
	$entete = "From: truc <>\n";
	$entete .= "Reply-To: $destinataire1\n";
	$entete .= "Content-Type: text/plain; charset=UTF-8\n";
	$entete .= "Content-Disposition: inline\n";
	$entete .= "Content-Transfer-Encoding: 8bit\n";
	$entete .= "MIME-Version: 1.0\n";
	$entete .= "Date: $datefr $heurefr\n";
	
	$resultat = mail($destinataire1,$objet1,$msg,$entete);
	if ($resultat == false) {
		Header("Location: ../contact.php");
	} else {
		Header("Location: ../contactOK.php");
	}	

Modifié par jytest (06 May 2011 - 15:34)
A première vue $destinataire2 (que tu utilise dans $entete) n'est pas défini. C'est peut etre ca
Non, ce n'est pas cela qui provoque l'erreur.
J'ai d'ailleurs corrigé cela directement dans ce code

En google chrome, j'ai
Erreur 324 (net::ERR_EMPTY_RESPONSE) : Le serveur a mis fin à la connexion sans envoyer de données


En IE8, je n'ai pas de message mais
$resultat est à false


Ce qui est plus bizarre c'est que ce bout de code fonctionne très bien avec
- un ftp non passif (ici il est passif)
C'est ce seul évènement qui pourrait, selon moi,
provoquer cette erreur !

J'ai beau implorer mon ami google, mais lui non plus ne sait pas m'aider.
Pourriez-vous m'aider car là je suis seul à ce problème sans solution.
Merci d'avance
Modifié par jytest (05 May 2011 - 10:52)
J'ai modifié le code :

$msg = "\n".'============================================================================'."\n"; 
    $msg.= 'Message provenant de'."\n\n"; 
    $msg.= '>>> Contact       : '.$nom.' '.$prenom."\n"; 
    $msg.= 'Etablissement     : '.$etablissement."\n"; 
    $msg.= 'Secteur Activités : '.$secteur."\n\n"; 
    $msg.= 'Email : '.$email."\n\n\n"; 
    $msg.= 'Message :'."\n"; 
    $msg.= $message."\n"; 
    $msg.= "\n".'============================================================================'."\n\n"; 
     
    $entete = 'Reply-To: '.$destinataire1."\n"; 
    $entete.= 'Content-Type: text/plain; charset=UTF-8'."\n"; 
    $entete.= 'Content-Disposition: inline'."\n"; 
    $entete.= 'Content-Transfer-Encoding: 8bit'."\n"; 
    $entete.= 'MIME-Version: 1.0'."\n"; 
    $entete.= 'Date: '.$datefr.' '.$heurefr."\n"; 
     
    if(mail($destinataire1,$objet1,$msg,$entete))
		{ 
		header("Location: ../contactOK.php"); 
		}
		else
			{ 
			header("Location: ../contact.php"); 
			}     


Ce que j'ai changé :

- Pas d'espace après le nom de la variable pour la concaténation ($msg.= à la place de $msg .=)
- Réécriture de ta vérification de l'envoie de mail en une version plus "logique", si le mail part, on redirige vers "contactOK", sinon on redirige vers "contact".
Et oui, comme je m'en doutais,
j'ai perdu des cheveux à cause de one.com

Après avoir passé plus de 4 x 1/2 h avec eux par tchat,
j'ai enfin eu une dame, qui a bien voulu vérifier le serveur.

Il s'est avéré que le serveur sur lequel j'étais subissait des attaques extérieures,
et que les techniciens allaient s'arranger cela...

Et après 24h, o magie,
mon script fonctionne très bien !!!

Donc, je n'aurais perdu que 3 jours !!!