J'ai créer une simple classe de mail qui correspond juste à ce que j'ai besoin, avec une vérification sur certains champs, sur l'expéditeur et ensuite un envois basique tout n'est pas finis j'ai pas encore créer les entêtes mais pour l'instant j'ai ça :
<?php
class Mail
{
protected $erreur;
protected $expediteur;
protected $destinataire;
protected $objet;
protected $message;
public function __construct() {
$this->expediteur = '';
$this->destinataire = '';
$this->objet = '';
$this->message = '';
}
public function __toString() {
return "Classe envoie de mail.";
}
function setExpediteur($expediteur) {
$this->expediteur = $expediteur;
}
function getExpediteur() {
return $this->expediteur;
}
function setObjet($objet) {
$this->objet = $objet;
}
function getObjet() {
return $this->objet;
}
function setDestinataire($destinataire) {
$this->destinataire = $destinataire;
}
function getDestinataire() {
return $this->destinataire;
}
function setMessage($liste) {
// Création du message
foreach($liste as $key => $value) {
$this->message .= "<p>";
$this->message .= $key." : ".($this->champsMailOk($value))? $value : 'non renseigné';
$this->message .= "</p>";
}
}
function getMessage() {
return $this->message;
}
function sendMail() {
if( (!$this->checkExpediteur() === false) ) {
if(mail($this->getDestinataire(),$this->getObjet(),$this->getMessage()))
{
echo "ok";
}
else{
echo "Nok";
}
}
}
function checkExpediteur() {
return filter_var($this->getExpediteur(),FILTER_VALIDATE_EMAIL);
}
function possedeSautDeLignes($var) {
return( strstr($var, "\n") or strstr($var, "\r") or strstr($var, "%0A"));
}
function contientHeaders($var) {
$MOTIF_ERRONE = '*****eRrOr*****';
$headersAChercher = array("/Content\-Type\:/i","/bcc\:/i","/cc\:/i","/to\:/i", "/Mime\-Type\:/i","/subject\:/i","/from\:/i");
$var = preg_replace($headersAChercher, $MOTIF_ERRONE, $var);
return( strstr($var, $MOTIF_ERRONE) );
}
function champsMailOk($champsMail) {
return( !$this->contientHeaders($champsMail) && !$this->possedeSautDeLignes($champsMail) );
}
}
Et ensuite dans une page php :
$mail = new Mail();
$mail->setExpediteur($_POST['email']);
$mail->setDestinataire('[email protected]');
$mail->setObjet('Contact');
$mail->setMessage(array('Société' => $_POST['societe'],
'Nom' => $_POST['nom'],
'Prénom' => $_POST['prenom'],
'Fonction' => $_POST['fonction'],
'Adresse' => $_POST['adresse'],
'Code postal' => $_POST['cp'],
'Ville' => $_POST['ville'],
'Téléphone' => $_POST['tel'],
'Fax' => $_POST['fax']));
$mail->sendMail();
Quand je test il me retourne "ok" donc la fonction mail semble bien passer :/un simple
mail('[email protected]','entete','message');
marche je le reçois avec une entête ***SPAM*** mais je le reçois bien. Une idée ?