TUTORIEL  
Envoyer des cartes personnalisées en PHP
Un script complet pour diffuser à une liste des images dédiées, avec la bibliothèque GD et l'extension PEAR::Mail. (03/12/2004)
  1. Mise en place | 2. Ajout du texte et envoi

La période du nouvel an approche, et vous désespérez de choisir entre 1) envoyer le même mail de vœux à tous vos amis, 2) passer plusieurs heures à leur écrire une lettre dédicacée de vos blanches mains ?
Pas de problème : JDN Développeurs vous propose un script qui d'une part enverra à chacun de vos amis un e-mail à leur nom, accompagné d'autre part d'une image prise au hasard.
Votre seule tâche : créer un fichier texte avec les adresses et prénoms de vos amis, et remplir un dossier d'image en rapport avec le thème, mais toutes de la même taille.

Le fichier texte est simples : chaque ligne contient un email, suivi d'un espace, suivi du prénom de la personne. Pour les images, nous avons choisi du 640*480, mais libre à vous de modifier le script…

Notre script suit une progression logique : d'abord récupérer le fichier d'adresses, puis pour chaque adresse : récupérer une image au hasard, lui ajouter un texte via la librairie GD, et enfin envoyer le mail (avec le bon type MIME, bien sûr).

Voici la racine de notre script :
recupererAdresses();
while ($i < count($adresses)) {
$leMail = $adresses[$i];
$i++;
$lePrenom = $adresses[$i];
$i++;
recupererImage();
ajouterTexte($lePrenom, $image);
envoyerMail($leMail, $lePrenom, $im);
}

Les adresses
Récupérer les adresses se fera dans un tableau contenant alternativement l'e-mail et le prénom de la "cible".

function recupererAdresses() {
  global $fichier, $adresses;
  if (file_exists($fichier) && filesize($fichier) > 0) {
    $file = fopen ($fichier, "r");
    while ($contact = fscanf ($file, "%s %s")) {
      list($adresse, $prenom) = $contact;
      $adresses[] = $adresse;
      $adresses[] = $prenom;
      }
    fclose($file);
    }
  else
    {
    ?>Fichier d'adresses introuvable!<?
    }
  }

La boucle while() qui suit dans la racine de notre script se charge de placer chaque élément dans une variable.

Les images
Ici encore, on ne sait pas combien on a d'images. Notre script se tire d'affaire :

function recupererImage() {
  global $dossierImages, $images, $image;

  // Récuperer les images
  $d = dir($dossierImages);
  $c = 0;
  $nbr = array();
  while (false !== ($f = $d->read())) {
    if (preg_match('/^[a-zA-Z0-9]+\.jpg$/', $f)) {
      $c++;
      $images[] = $f;
      }
    }

  // Combien d'images ?
  $nbr = count($images);

  // Une image au hasard
  $image = $images[rand(0, $nbr-1)];
  }

  1. Mise en place | 2. Ajout du texte et envoi
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages