Mail envoyé mais non reçu

cs_kcin Messages postés 63 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 26 novembre 2012 - 14 juin 2012 à 18:21
abdou_ing85 Messages postés 12 Date d'inscription dimanche 8 avril 2007 Statut Membre Dernière intervention 20 septembre 2013 - 26 août 2013 à 10:15
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

3 réponses

abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 1
15 juin 2012 à 14:23
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
0
cs_kcin Messages postés 63 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 26 novembre 2012
15 juin 2012 à 18:06
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
0
abdou_ing85 Messages postés 12 Date d'inscription dimanche 8 avril 2007 Statut Membre Dernière intervention 20 septembre 2013
26 août 2013 à 10:15
bjr
j'ai le meme probleme.mail envoyé mais non recu
0
Rejoignez-nous