56 lines
2.0 KiB
PHP
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]);
|