La période du nouvel an approche, et vous désespérez de choisir
entre 1) envoyer le même mail de vux à 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)];
}
|