Mail envoyé mais non reçu

Signaler
Messages postés
63
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
26 novembre 2012
-
Messages postés
12
Date d'inscription
dimanche 8 avril 2007
Statut
Membre
Dernière intervention
20 septembre 2013
-
Bonjour à tous,

Je suis en train de me faire une petite class pour envoyer des mails, et lors de mes tests, mail() me renvoi bien true mais le mail est jamais reçu, donc j'aurais voulu savoir si mon corps d'email est correct :



From: "Mon Nom" <mon_adresse@mon_domaine.com>
MIME-Version: 1.0
X-Mailer: PHP/5.2.6-1+lenny16
Content-Type: multipart/alternative;
boundary= "-----=5ba6521d08c5a8c57faeea02947ae709"
Date: Thu, 14 Jun 2012 18:13:51 +0200

-------=5ba6521d08c5a8c57faeea02947ae709
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit

test test test


-------=5ba6521d08c5a8c57faeea02947ae709
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
<html> test test test </html>


------- =5ba6521d08c5a8c57faeea02947ae709--
-------=5ba6521d08c5a8c57faeea02947ae709--



Je sais qu'il doit exister des centaines de class pour faire ce genre de choses, mais j'avais du temps à perdre ^^ Donc, manque t'il des éléments dans ce corps ?

Merci d'avance.


Kcin
A voir également:

3 réponses

Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

peux tu donnais plus de détails sur ton code car la je (on) capte rien :-) Gete peut etre un coup d'oeil sur http://php.net/manual/en/function.mail.php
Messages postés
63
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
26 novembre 2012

Voilà le code source de ma class. Il y a surement des choses à supprimer mais je le ferai plus tard.

<?php

class sendMail
{
/*
Nom & adresse de l'expéditeur
@var array
*/
var $from;

/*
Adresse du reply (si différente de l'expéditeur)
@var array
*/
var $replyTo;

/*
Adresse du destinataire
@var array
*/
var $to;

/*
Adresse du Cc
@var array
*/
var $cc;

/*
Adresse du Bcc
@var array
*/
var $bcc;

/*
Sujet du mail
@var string
*/
var $subject;

/*
Contenu du mail
@var array
*/
var $content;

/*
Pièce jointe
@var array
*/
var $attachment;

/*
Type du mail =  > text/plain | text/html | multipart/alternative
@var string
*/
var $type;

/*
Priorité du mail => de 1 à 5. Plus c'est petit plus c'est important
@var int
*/
var $priority;

/*
Accusé de réception
@var string
*/
var $receipt;

/*
Sauvegarde du mail
@var booléan
*/
var $save;



public function __construc()
{

}

public function mailFrom($name, $address)
{
if($this->checkMail($address))
{
$this->from[0] = array($name, $address);
}
else
{
$this->getException("Adresse mail de l\'expéditeur invalide !!");
}
}

public function mailReplyto($name, $address)
{
if($this->checkMail($address))
{
if($this->from && $this->from[0][1] != $address){ $this->replyTo = array($name, $address); }
}
else
{
$this->getException("Adresse mail du replyTo invalide !!");
}
}

public function mailTo($name, $address)
{
if($this->checkMail($address))
{
$this->to[] = array($name, $address);
}
else
{
$this->getException("Adresse mail du destinataire invalide !!");
}
}

public function mailCc($name, $address)
{
$error = false;

if($this->checkMail($address))
{
if($this->to)
{
$error = $this->findAddress($this->to, $address);
}

if($this->bcc)
{
$error = $this->findAddress($this->bcc, $address);
}

if(!$error){ $this->cc[] = array($name, $address); }
}
else
{
$this->getException("Adresse mail du Cc invalide !!");
}
}

public function mailBcc($name, $address)
{
$error = false;

if($this->checkMail($address))
{
if($this->to)
{
$error = $this->findAddress($this->to, $address);
}

if($this->cc)
{
$error = $this->findAddress($this->cc, $address);
}

if(!$error){ $this->bcc[] = array($name, $address); }
}
else
{
$this->getException("Adresse mail du Bcc invalide !!");
}
}

public function mailSubject($subject)
{
$this->subject = $subject;
}

public function mailContent($content)
{
$t_content = array("text"=>"", "html"=>"");

switch($this->type)
{
case "text/html":
$t_content["text"] = stripslashes(nl2br($content));
break;
case "multipart/alternative":
$t_content["text"] = stripslashes(nl2br($content));
$t_content["html"] = stripslashes(strip_tags(str_replace(array("
", "
", "
"), "\n", $content)));
break;
default:
case "text/plain":
$t_content["html"] = stripslashes(strip_tags(str_replace(array("
", "
", "
"), "\n", $content)));
break;
}

$this->content = array("text"=>$t_content["text"], "html"=>$t_content["html"]);
}

public function mailAttachment()
{
/* contrôler le type mime de la pièce jointe */
$this->attachment = "";
}

public function mailType($type)
{
if($type){ $this->type = $type; }
else{ $this->type = "text/plain"; }
}

public function mailPriority($priority)
{
if($priority){ $this->priority = $priority; }
else{ $this->priority = 3; }
}

public function mailReceipt($receipt = false)
{
if($receipt){ $this->receipt[] = $this->from[0]; }
}

public function mailSave($save = false)
{
if($save){ $this->save = true; }
}

public function send()
{
/* Vérifier si $this->replyTo est rempli. Si non, y mettre l'adresse de $this->from */
/* Cc & Bcc sont à mettre dans le header */

if(!is_array($this->from)){ $this->getException("Aucune adresse d'expéditeur fournie !!"); }
if(!is_array($this->to)){ $this->getException("Aucune adresse(s) de destinataire(s) fournie(s) !!"); }
if(empty($this->subject)){ $this->getException("Aucun titre à votre Email !!"); }
if(!is_array($this->content)){ $this->getException("Aucun contenu détecté !!"); }

// On filtre les serveurs qui présentent des bogues.
if(count($this->to) > 1){ $passage_ligne = "\r\n"; }
else
{
if(!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $this->to[0][1])){ $passage_ligne = "\r\n"; }
else{ $passage_ligne = "\n"; }
}

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

//=====Lecture et mise en forme de la pièce jointe.
/* $fichier   = fopen("$MREL/adm/img.jpg", "r");
$attachement = fread($fichier, filesize("$MREL/adm/img.jpg"));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier); */
//==========

//=====Création du header de l'e-mail.
$header = "From: ".$this->tab2stringAddress($this->from).$passage_ligne;

if(is_array($this->cc)){ $header .= "Cc: ".$this->tab2stringAddress($this->cc).$passage_ligne; }
if(is_array($this->bcc)){ $header .= "Bcc: ".$this->tab2stringAddress($this->bcc).$passage_ligne; }

if(is_array($this->replyTo)){ $header.= "Reply-to: "".$this->replyTo[0]."" <".$this->replyTo[1].">".$passage_ligne; }
$header .= "MIME-Version: 1.0".$passage_ligne;

if($this->priority){ $header .= "X-Priority: ".$this->priority.$passage_ligne; }
if($this->receipt){ $header .= "Disposition-Notification-To: ".$this->tab2stringAddress($this->from).$passage_ligne; }

$header .= "X-Mailer: PHP/".phpversion().$passage_ligne;
$header .= "Content-Type: ".$this->type.";".$passage_ligne." boundary="$boundary"".$passage_ligne;
$header .= "Date: ".date("r").$passage_ligne;

$header .= $passage_ligne;

//==========

//=====Création du message.

if(!empty($this->content["text"])){
//=====Ajout du message au format texte.
$content .= $passage_ligne."--".$boundary.$passage_ligne;
$content .= "Content-Type: text/plain; charset="ISO-8859-1"".$passage_ligne;
$content .= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$content .= $passage_ligne.$this->content["text"].$passage_ligne;
//$txt true;
}
 
if(!empty($this->content["html"])){
//=====Ajout du message au format HTML.
$content .= $passage_ligne."--".$boundary.$passage_ligne;
$content .= "Content-Type: text/html; charset="ISO-8859-1"".$passage_ligne;
$content .= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$content .= $passage_ligne."<html> ".$this->content["html"]." </html>".$passage_ligne;
// == ========

$html = true;
}

if($txt){ $content .= $passage_ligne."--".$boundary."--".$passage_ligne; }
if($html){ $content .= $passage_ligne."--".$boundary."--".$passage_ligne; }

/* $message.= $passage_ligne."--".$boundary.$passage_ligne; */
 	
//=====Ajout de la pièce jointe.
/* $content.= "Content-Type: image/jpeg; name="img.jpg"".$passage_ligne;
$content.= "Content-Transfer-Encoding: base64".$passage_ligne;
$content.= "Content-Disposition: attachment; filename="img.jpg"".$passage_ligne;
$content.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$content.= $passage_ligne."--".$boundary."--".$passage_ligne; */

foreach($this->to as $address)
{
$result[$address[1]] = mail($address[1], $this->subject, $content, $header);
}

print_r($header);
echo "$content";

print_r($result);
}



private function checkMail($adress)
{
$syntaxe = '#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
    if(preg_match($syntaxe,$adress))
{
    	return true;
} 
   	else
{ 
     	return false;
}
}

private function findAddress($address1, $address2)
{
foreach($address1 as $address)
{
if($address === $address2){ return true; }
}
}

private function tab2stringAddress($tab)
{
$i = 0;
$str_address = """;

foreach($tab as $indice=>$infos)
{
if($i > 0){ $str_address .= ">, ""; }
$str_address .= implode("" <", $infos);
$i++;
if($i == count($tab)){ $str_address .= ">"; }
}

return $str_address;
}

private function getException($msg)
{
throw new Exception("$msg");
}
}




/* global $MREL;

$mail = $destinataire; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
$message_html = "<html><head></head> Salut à tous , voici un e-mail envoyé par un  script PHP .</html>";
//  ==========
 
//=====Lecture et mise en forme de la pièce jointe.
$fichier   = fopen("$MREL/adm/img.jpg", "r");
$attachement = fread($fichier, filesize("$MREL/adm/img.jpg"));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
 
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Hey mon ami !";
//=========
 
//=====Création du header de l'e-mail.
$header = "From: "$expediteur"<$expediteur>".$passage_ligne;
$header.= "Reply-to: "$expediteur" <$expediteur>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary="$boundary"".$passage_ligne;
//==========
 
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary="$boundary"".$passage_ligne;
$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;
//==========
 
//=====On ferme la boundary alternative.
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
 
 
 
$message.= $passage_ligne."--".$boundary.$passage_ligne;
 
//=====Ajout de la pièce jointe.
$message.= "Content-Type: image/jpeg; name="img.jpg"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename="img.jpg"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;

return email($destinataire, $sujet, $message, $expediteur, $header); */

?>


J'utilise cette class avec ceci :
(utilisation minimale)
<?php

require_once "mail.class.php";

$mail = new sendMail();
$mail->mailFrom('CHAPIT Nicolas', 'nicolas.chapit@saint-gobain.com');
$mail->mailTo('CHAPIT Free', 'kcinfr@gmail.com');
$mail->mailsubject('Test envoi mail');
$mail->mailType("multipart/alternative");
$mail->mailContent("test test test");
$mail->send();

?>


Kcin
Messages postés
12
Date d'inscription
dimanche 8 avril 2007
Statut
Membre
Dernière intervention
20 septembre 2013

bjr
j'ai le meme probleme.mail envoyé mais non recu