565 tutoriels disponibles
Chercher un tutoriel
Bienvenue
sur Shareannonce
 
Gestion réussie d'un emailing sur serveur ovh
Ecrit par: Shareannonce
Date création:  09-04-2011
Nombre de vues:  3850
Catégorie:  informatique > gestion > ovh
Note: 
 
   Tutoriel N° 77

1/ Création d'une table pour recevoir les emails de désinscription

Sous phpmyadmin

CREATE TABLE IF NOT EXISTS `emailspam` (
`id_email` bigint(20) NOT NULL auto_increment,
`email` text,
`date` date default NULL,
PRIMARY KEY (`id_email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


2/ Script de désinscription php/mysql
En bas de votre mailing ajouter une ligne pour se désinscrire avec l'email envoyé en paramètre
http://www.domaine.com/efface.php?email=$email

efface.php

<form action="efface2.php" method="post">
<td>Saisir ici votre email pour être effacé</td> <td><input type="text" name="email" value="<?echo $email ?>"></td><td><input type="submit" value="Effacer email"></td>
</form>


efface2.php

<?
$base='xxx'; // remplacer par le nom de votre base
$login='xxx'; // remplacer par votre identifiant mysql
$pwd='xxx'; // remplacer par votre mot de passe mysql
$host='localhost';
$db=mysql_connect($host, $login, $pwd);
if(!mysql_select_db($base,$db))
{
echo "erreur ".mysql_error()."<br>";
mysql_close($db);
exit;
}
$date=date("Y-m-d");
$sql="DELETE from email where email='$email'";
mysql_query($sql);
mysql_close();
echo $email. "effacé";
?>


3/ Script d'envoi de mail php/mysql

mailscript.php

Je vous mets en bas de ce tutoriel la source de ce script

4/ Signatures domainkeys, dkim et spf
J'ai traité dans 2 autres tutoriaux l'optimisation de ce mail avec les signatures (spf, dkim et domainkeys).

voir tutoriel pour la mise en place des signatures dkim et domainkeys:
http://www.shareannonce.com/david/tutorial/65

si votre serveur est un RPS je vous conseille également ce tutoriel pour la config ipfailover
Ceci est necessaire pour le spf avec un serveur rps
http://www.shareannonce.com/david/tutorial/76

voir tutoriel pour la mise en place du spf:
http://www.shareannonce.com/david/tutorial/7d

5/ Gestion des NPAI

En ssh (remplacer domain par votre domaine)
cd /home/vpopmail/domains/domain.com/
#vi .qmail-default
| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox
| /usr/local/php5/bin/php -q /home/domain/www/forward.php

Ce script va recevoir les emails entrants et notamment les mailer-daemon et les supprimer de votre table email.

forward.php

<?
// remplacer mondomaine par le nom de votre domaine
$base='xxx'; // remplacer par le nom de votre base
$login='xxx'; // remplacer par votre identifiant mysql
$pwd='xxx'; // remplacer par votre mot de passe mysql
$host='localhost';
$db=mysql_connect($host, $login, $pwd);

if(!mysql_select_db($base,$db))
{
echo "erreur ".mysql_error()."<br>";
mysql_close($db);
exit;
}

/* read the mail that is forwarded to the script *** */
$fd = fopen("php://stdin", "r");

$email = "";
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);

//*** handle email ***
$lines = explode("n", $email);

// empty vars
$from = "";
$to = "";
$date = "";
$subject = "";
$message = "";
$splittingheaders = true;

for ($i=0; $i<count($lines); $i++) {
if ($splittingheaders) {

// look out for special headers
if ( (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) and ($subject=="") ){
$subject = $matches[1];
}
if ( (preg_match("/^From: (.*)/", $lines[$i], $matches)) and ($from=="") ){
if(strpos($lines[$i],"<"))
{
//the name exist too in from header
$data = explode('<',$lines[$i]);
$from = substr(trim($data[1]),0,-1);
}
else{
//only the mail
$from = $matches[1];
}
}

if (preg_match("/^To: (.*)/", $lines[$i], $matches)) {

$to = $matches[1];
}

if (preg_match("/^Date: (.*)/", $lines[$i], $matches)) {
$date = $matches[1];
}
} else {
// not a header, but message
$message .= $lines[$i]."n";
}

#if (trim($lines[$i])=="") {
if ($i==45) {
// empty line, header section has ended
$splittingheaders = false;
}
}

$date=date("Y-m-d");
// efface de votre base email l'email entrant
$sql="delete from email where email='$to'";
mysql_query($sql);
mysql_close();
?>



PS/ Remplacez les valeurs manquantes pour chaque fichier et notamment les informations de connection de votre base de données MySql.

Pour le fichier mailscript.php vous devez également composer votre email HTML et texte notamment.




Télécharger les sources de ce tutoriel

 
 
   Autres tutoriels de la même catégorie >
 
ShareAnnonce version 2.0 Tous droits reserves. | Condition d'utilisation | Contact