Bonjour,
Cette classe sert dans la gestion des bounces. Je la test en ce moment car ça fait longtemps que je cherche une solution efficace :
j'envois des mails automatique aux clients de ma boutique mais ça ne sert à rien d'envoyer des mails à ceux qui ont une adresse e-mail fausse ou erronée. Donc, quand on en envoi un en erreur, ça me retourne un mail d'erreur que cette classe va pouvoir analyser :
- soit en soft bounce : l'adresse email existe mais est temporairement indisponible (exemple : boite pleine)
- soit en hard bounce : l'adresse email est fausse
Donc, au niveau utilisation :
ETAPE 1 : Spécifier une adresse mail de retour d'erreur
- Soit vous spécifier une adresse de retour d'erreur dans votre système d'envoi de mail. Dans votre code PHP, ASP ou autre, vous spécifier le return-Path
- Soit vous utiliser l'adresse par défault de votre serveur d'envoi
ETAPE 2 : Parcourir la boite mail d'erreur et identifier les bounces
- Vous placer la classe dans l'arbo de votre site
- Vous l'appeler
Voici mon code de test (que j'ai d'ailleurs adapté, mais on trouve le même genre de code dans les exemples fournis avec la classe) :
$filename = 'logs/bouncelog.csv';
if (file_exists($filename)) unlink($filename);
$time_start = microtime_float();
require_once('callback samples/callback_csv.php'); // appel à la fonction de callback
// determine the current directory
$dirTmp = getcwd();
// define the "base" directory of the application
if (!defined('_PATH_BMH')) {
$dirTmp = $_SERVER['DOCUMENT_ROOT'] . '/' . $dirTmp;
if ( strlen( substr($dirTmp,strlen($_SERVER['DOCUMENT_ROOT']) + 1) ) > 0 ) {
define('_PATH_BMH', substr($dirTmp,strlen($_SERVER['DOCUMENT_ROOT']) + 1) . "/");
} else {
define('_PATH_BMH', '');
}
}
// END determine the current directory
include(_PATH_BMH . 'class.phpmailer-bmh.php');
// testing examples
$bmh = new BounceMailHandler();
//$bmh->action_function = 'callbackAction'; // default is 'callbackAction'
$bmh->verbose = VERBOSE_REPORT; //VERBOSE_REPORT; //VERBOSE_DEBUG; $bmh->testmode = true; // false is default, no need to specify
$bmh->mailhost = '********'; // your mail server
$bmh->mailbox_username = '*********'; // your mailbox username
$bmh->mailbox_password = '******'; // your mailbox password
$bmh->boxname = 'INBOX'; // the mailbox to access, default is 'INBOX'
$bmh->openMailbox();
$bmh->processMailbox();
echo '<hr style="width:200px;" />';
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Seconds to process: " . $time . "<br />";
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
Voila, d'après les tests que j'ai pu faire, ça fonctionne très bien sauf avec les adresses hotmail, ce qui est génant vu que ça représente une grosse partie des mails que je gère.