[OK] Envoi mail automatique - Debuggage

Cette section vous permet de fournir votre code pour relecture. Les membres pourront vous donner quelques retours concernant leur propre expérience. C'est un bon moyen pour apprendre et s'améliorer.

[OK] Envoi mail automatique - Debuggage

Messagepar rem » Mar Jan 08, 2013 9:57 pm

Bonsoir à toutes et à tous,
Je m'appelle Rémi et je suis chez Free-H depuis plus d'un an (et j'en suis très satisfait par ailleurs !!).
Jusqu'à présent, pour développer mon site web je n'ai jamais eu besoin de créer un post sur un forum spécialisé en informatique ; mais là je crois que le problème que je rencontre est plus fort que moi !!!
Il s'agit en fait d'envoyer un mail AUTOMATIQUE à une personne lambda qui vient de poster un commentaire sur le site ; et cela dans le but de lui envoyer un lien pour qu'il active le propre commentaire qu'il a écris. Cela le force à rentrer une adresse valide dans le formulaire.
Seulement voilà, je rencontre un certains nombre de problème car toutes les messageries ne traduisent pas de la même manière le code que j'envois.
Orange par exemple possède un antispam tellement restrictif que mon mail n'arrive même pas dans la boîte mail !!!
En revanche chez Hotmail, tout marche nickel !!

Voici le code, très largement inspiré du site du Zéro !!
Code: Tout sélectionner
$mail = strip_tags($_POST['mail']); // 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 = "";
$message_html = "
<html><head></head><body>
Bonjour,<br/>
Pour valider le commentaire que vous avez laissé sur <a href=\"http://www.XXX.fr\" target=\"_blank\">XXX</a>, merci de cliquer sur le lien suivant :<br/>
<a href=\"http://www.XXX.fr/admin/valider_commentaire_personne.php?code=".$nombre."\">Valider mon commentaire !</a><br/>
Ce e-mail est généré automatiquement, merci de ne pas y répondre.<br/>
Si vous souhaitez créer un compte sur le site d'XXX pour commenter plus facilement les images, n'hésitez pas
à contacter l'administrateur en répondant à ce mail.<br/>
A bientôt sur XXX<br/>
L'administrateur du site
</body></html>";
//==========
 /*
//=====Lecture et mise en forme de la pièce jointe.
$fichier   = fopen("image.jpg", "r");
$attachement = fread($fichier, filesize("image.jpg"));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
*/
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========

//=====Définition du sujet.
$sujet = "Validation de votre commentaire sur XXX.fr";
//=========

//=====Création du header de l'e-mail.
$header = "From: \"XXX\"<administrateur@XXX.fr>".$passage_ligne;
$header.= "Return-Path: \"XXX\" <administrateur@XXX.fr>".$passage_ligne;
$header.= "Reply-to: \"XXX\" <administrateur@XXX.fr>".$passage_ligne;
$header.= "Content-Type: text/plain; charset=\"iso-8859-1\"".$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_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$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_alt.$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_alt."--".$passage_ligne;
//==========
 
$return_path = "-f" . "administrateur@XXX.fr";

$message.= $passage_ligne."--".$boundary.$passage_ligne;
/*
//=====Ajout de la pièce jointe.
$message.= "Content-Type: image/jpeg; name=\"image.jpg\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"image.jpg\"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
*/
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header,$return_path);


Merci d'avance pour votre aide !!!
rem
 
Messages: 3
Inscription: Mar Jan 08, 2013 9:44 pm

Re: Envoi mail automatique - Debuggage

Messagepar rem » Ven Jan 11, 2013 8:58 pm

UP !!
Personne pour me donner un coup de main ??
J'ai posté ça ici car il est possible de free-h soit sur la Black List de Orange non ??
rem
 
Messages: 3
Inscription: Mar Jan 08, 2013 9:44 pm

Re: Envoi mail automatique - Debuggage

Messagepar rem » Ven Jan 11, 2013 10:59 pm

J'ai continué à chercher de mon côté, et j'ai fini par trouver sur ce même forum.
Un grand merci au staff pour son aide !!
Voici la solution pour ceux que ça intéresse ; la subtilité est de passer par phpmailer en copiant un répertoire phpmailer sur le serveur.
Le code, non fonctionnelle sans le-dit répertoire :
Code: Tout sélectionner
// On charge le script
   require("phpmailer/class.phpmailer.php");
   $mail = new PHPMailer();

   // Adresse email et mot de passe Free-H
   $mail->Username = "adresse@nomdedomaine.XXX";
   $mail->Password = "mot_de_passe";
   
   // Configuration
   $mail->IsSMTP(true);
   $mail->IsHTML(true); // Message HTML : true // Message texte : false
   $mail->SMTPDebug = 1;
   $mail->SMTPAuth = true;
   $mail->Host = "pf3.free-h.org";
   $mail->Port = 25;

   // Envoyeur de l'e-mail (From et Reply-to)
   $mail->From = "adresse@nomdedomaine.XXX";
   $mail->FromName ="Le nom de votre site par exemple";
   $mail->AddReplyTo("adresse@nomdedomaine.XXX","Le nom de votre site par exemple");

   // Receveur de l'e-mail
   $mail->AddAddress($mail_destinataire, $mail_destinataire);

   // Sujet et contenu du mail
   $mail->Subject = "BLABLABLA";
   $mail->Body = "
   <html><head></head><body>
BLABLABLA
Attention, le texte tapé est en HTML, les caractères spéciaux (é, ê, ô...) ne seront pas interprétés. Il faut mettre leur code html à la place.
</body></html>";
   $mail->WordWrap = 50;
   
   // Ajouter une pièce jointe
   //$mail->AddAttachment("images/piece_jointe.png");

   // Envoi du mail
   if(!$mail->Send())
   {
      // Le mail n'a pas été envoyé
      echo "<br/>Erreur d'envoi !";
   }
   else
   {
      // Le mail a été envoyé
      echo "Message envoyé !";
   }


Encore merci pour le coup de main.
rem
 
Messages: 3
Inscription: Mar Jan 08, 2013 9:44 pm


Retourner vers Analyse de code



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités