Files
wevads-platform/scripts/ethica/email-pattern-generator.php
2026-04-07 03:04:16 +02:00

56 lines
2.0 KiB
PHP

<?php
// Email Pattern Generator for Ethica HCPs
// Generates candidate emails from nom+prenom, validates via MX
$db = new PDO("pgsql:host=127.0.0.1;dbname=adx_system","admin","admin123");
$limit = 500;
$q = $db->query("SELECT id, nom, prenom, ville, pays FROM ethica.medecins_real
WHERE status IN ('active','pending_enrich')
AND (email IS NULL OR email='')
AND nom IS NOT NULL AND LENGTH(TRIM(nom))>=2
AND prenom IS NOT NULL AND LENGTH(TRIM(prenom))>=2
ORDER BY RANDOM() LIMIT $limit");
$patterns = [];
$found = 0;
$checked = 0;
while($r = $q->fetch(PDO::FETCH_ASSOC)) {
$nom = strtolower(trim(preg_replace('/[^a-zA-Z]/','',$r['nom'])));
$prenom = strtolower(trim(preg_replace('/[^a-zA-Z]/','',$r['prenom'])));
if(strlen($nom)<2 || strlen($prenom)<2) continue;
$p1 = substr($prenom,0,1);
$domains = ['gmail.com','yahoo.fr','hotmail.com','outlook.com'];
if($r['pays']=='TN') $domains[] = 'topnet.tn';
if($r['pays']=='ALG') $domains[] = 'yahoo.com';
if($r['pays']=='MA') $domains[] = 'menara.ma';
$candidates = [
"$prenom.$nom",
"$p1.$nom",
"$nom.$prenom",
"$prenom$nom",
"dr.$nom",
"dr.$prenom.$nom"
];
foreach($candidates as $prefix) {
foreach(array_slice($domains,0,2) as $dom) { // Only check top 2 domains
$email = "$prefix@$dom";
$checked++;
// Quick MX check
$mx = [];
if(@getmxrr($dom, $mx) && count($mx)>0) {
// Store as candidate (not confirmed)
$st = $db->prepare("UPDATE ethica.medecins_real SET email=:e, email_valid='candidate_mx' WHERE id=:id AND (email IS NULL OR email='')");
$st->execute([':e'=>$email, ':id'=>$r['id']]);
if($st->rowCount()>0) $found++;
break 2; // One email per contact
}
}
}
}
echo json_encode(["checked"=>$checked,"emails_generated"=>$found,"batch"=>$limit]);