// fonction perso : retourne true si l'adresse est du type xx@xx.xx , false autrement
function test_addresse($ad)
{
// echo "on teste l'adresse $ad";
return( ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',
$ad) );
}
$a="michel@cabare.net"; // fixé avec mon adresse mail pour le 1° param, a:)
// on récupère ici depuis le formulaire les champs suivant
$sujet=$_POST[sujet];
// $sujet : contient le sujet du mail pour le 2° param, sujet:)
$corps=$_POST[corps];
// $corps : contient le contenu du mail pour le 3° param, message:)
$cc=$_POST[cc];
// $cc : contient une adresse mail pour le 4° param entete, cc:)
// $erreur est un tableau qui contiendra tous les messages d'erreurs
unset ($erreurs); // raz de cette variable, au cas ou, pour etre sur
$erreurs = array();
// teste si le champ sujet: est rempli
if($sujet) {
// echo "cela roule";
}
else {
$sujet = "sans sujet"; // si le demandeur n'a rien prévu, on met ce sujet
}
// test validite adresse mail en cc // supression des espaces eventuels
$cc = str_replace(" ", "", $cc);
if (!$cc=="") {
if(!test_addresse($cc)) {
$erreurs[] = "l'adresse donnée en copie conforme -$cc- semble incorrecte";
}
}
// il n'y a pas d'erreur, on peut continuer
//******************************************
if(count($erreurs) == 0)
{
$hcc="Cc: $cc \n";
// mot clé Cc: permet de définir une adresse mail d'envois en copie
$entete=$hcc;
// creation du 4° paramètre
// premiere partie le code HTML
$boundary = "-----".md5(uniqid(rand()));
// c'est un message au format MIME
$entete .= "MIME-Version: 1.0\r\n";
// ce message est composé de plusieurs parties
$entete .= "Content-Type: multipart/related; boundary=\"$boundary\"\r\n";
//-- corps du message --
$message = "C'est un message de format MIME en plusieurs parties.\r\n";
$message .= "--$boundary\r\n";
$message .= "Content-Type:text/html; charset=\"iso-8859-1\"\r\n";
$message .= "Content-Transfer-Encoding: 8bit\r\n";
$message = "SUPER
ce mail est en htmlbeau en couleur ....et avec une image !
".$corps."";
$message .="
";
// deuxieme partie, l'image en tant que piece jointe
$pj="logo.jpg";
$fp = fopen($pj,"r");
$fichier_joint = fread($fp,filesize($pj));
fclose($fp);
echo "l'image du mail HTML est -$fichier_joint- se nomme $fichier_joint_name sa taille est de $fichier_joint_size son type MIME est $fichier_joint_type";
$fichier_joint = chunk_split(base64_encode($fichier_joint));
$message .= "--$boundary\n";
// définition du champ type
$message .= "Content-Type: application/octet-stream; name=\"$pj\"\r\n"; // dans name= on donne le nom de la pièce jointe
// encodage du fichier joint en base64
$message .= "Content-Transfer-Encoding: base64\r\n";
$message .= "Content-ID: \r\n";
$message .= "\r\n";
$message .= "$fichier_joint \r\n";
$message .= "\r\n\r\n";
$message .= "--$boundary--";
}
// on verifie le tableau des erreurs, s'il n' est pas vide, on liste les erreurs
//******************************************************************************
if(count($erreurs) > 0)
{
echo "Votre message n'a pu être envoyé pour les raisons suivantes :
";
echo "";
while(list($k,$v) = each($erreurs)) {
echo "- ".$v."
";
}
echo "
";
}
else // s'il est vide, on peut lancer le(s) mail(s) avec ses 4 paramètres
{
// envois du email au destinataire principal
$rep="webmaster";
if(!email("webmaster",$a, $sujet, $message, $rep, $entete))
echo "Le message à $a n'a pu être envoyé.";
// L'envoi du email a l'adresse donnée en Cc
if($cc) {
if(!email("webmaster",$cc, $sujet, $message, $rep, $entete))
echo "Le message à $cc n'a pu être envoyé.";
}
}
?>