Page 1 sur 1

Mail de validation sous mac

Posté : 06 juin 2016, 16:21
par tambourineman
Bonjour,.
je suis en formation de webdesigner, et nous avons créé un site avec un formulaire de contact. Je remplis mon formulaire, Je reçois bien un message m'indiquant qu'un mail m' a été envoyé mais je ne reçois pas ce mail. Je suis sous mac (El capitan) , et une autre élève qui est sous mac a le même problème. La prof qui est sur pc ne sais pas d’où peut venir le problème. . J'ai envoyé mes fichier à la prof qui a testé sur son pc et j'ai bien reçu le mail......Donc c'est bien un problème de mac.....j'ai bien changé les deux fichiers php.ini (smtp, port, et adresse mail)....il y en a peut-être d'autre????
Quelqu'un connaît-il la solution à ce problème?
merci d'avance.

Re: Mail de validation sous mac

Posté : 06 juin 2016, 17:58
par Naroth
Peux-tu nous partager un peu de code ? Il sera plus simple pour nous d'essayer de comprendre d'où vient ton problème.

Sinon dans les trucs a checker :

- Des fonctions php avec un comportement un peu différent sous mac
- Des soucis d'encodage avec ton éditeur de texte

Re: Mail de validation sous mac

Posté : 06 juin 2016, 20:30
par tambourineman
Je te met ici mon code....

<?php



$msg_erreur='Erreur, les champs suivants doivent être obligatoirement remplis';

$msg_ok='Votre message vient d\'être envoyé';

$message=$msg_erreur;


define('MAIL_EXPEDITEUR','[email protected]');
define('MAIL_SUJET','Contact provenant du cv');


if(empty($_POST['nom'])) $message.=': Champ <b>Nom</b> vide<br/>';

if(empty($_POST['email'])) $message.=': Champ Email vide';

if(empty($_POST['message'])) $message.=': Champ message vide';



if(strlen($message) > strlen($msg_erreur)){



echo $message;
}


else{

foreach($_POST as $index=>$valeur)

{
$$index= stripslashes(trim($valeur));


}



$mail_entete="MIME-Version : 1.0\r\n";
$mail_entete.="From :{$_POST['nom']}"."<{$_POST['email']}>\r\n";
$mail_entete.='Reply-To:'.$_POST['email']."\r\n";
$mail_entete.='Content-Type: text/plain;charset="utf-8"';
$mail_entete.="\r\nContent-Transfert-Encoding:8bit\r\n";
$mail_entete.='X-Mailer:PHP/'.phpversion()."\r\n";


$mail_corps="Message de : $nom\n";
$mail_corps.="Email : $email\n";
$mail_corps.="$message";


if(mail(MAIL_EXPEDITEUR,MAIL_SUJET,$mail_corps,$mail_entete))
{


echo '
<script>
alert("Votre message a bien été transmis à notre service clientèle");
window.location="index.php#contact";
</script>';

}

else{

echo 'erreur d\'envoi';
}

}


?>


/////////////
Voila, en espérant que tu puisse m'aider, ce serai super....
merci,
cordialement,
freddo

Re: Mail de validation sous mac

Posté : 06 juin 2016, 23:43
par Naroth
Tout ce que j'ai trouvé, peut être lié au faite que tu sois sous noyau UNIX
Note:
Si le message n'est pas reçu, essayez d'utiliser uniquement un caractère LF (\n). Quelques agents de transfert de mail Unix (par exemple » qmail) remplacent le caractère LF par le caractère CRLF automatiquement (ce qui revient à doubler le caractère CR si le caractère CRLF est utilisé). Ceci doit être un dernier recours car cela ne correspond pas à la » RFC 2822.
source : https://secure.php.net/manual/fr/function.mail.php

Re: Mail de validation sous mac

Posté : 07 juin 2016, 08:29
par tambourineman
merci pour la rapidité de ta réponse, mais j'ai rien compris...je ne maitrise pas du tout le php....Concrètement, je dois faire quoi?
cordialement,
freddo

Re: Mail de validation sous mac

Posté : 07 juin 2016, 10:11
par Naroth
Pour envoyer un mail, il faut une structure très particulière, par exemple les "\r\n" dans l'en-tête.
La note dit donc que certain agents de mail UNIX remplace automatique "\n" par "\r\n".
De ce fait il est possible que si "\r\n" est déjà présent dans le mail (comme dans ton en-tête), tu te retrouves avec "\r\r\n". (Ce qui ne respecte pas le format de mail, et ce qui t'empêche de le recevoir aussi)

Essaye d'enlever les "\r" dans ton en-tête de mail :

Code : Tout sélectionner

$mail_entete="MIME-Version : 1.0\n"; $mail_entete.="From :{$_POST['nom']}"."<{$_POST['email']}>\n"; $mail_entete.='Reply-To:'.$_POST['email']."\n"; $mail_entete.='Content-Type: text/plain;charset="utf-8"'; $mail_entete.="\r\nContent-Transfert-Encoding:8bit\n"; $mail_entete.='X-Mailer:PHP/'.phpversion()."\n";