Descrizione
Variante batch di action_email_send_tracked progettata per outreach commerciali a volume controllato rispettando le policy anti-spam dei provider SMTP enterprise (Gmail/Workspace, Outlook 365, Yahoo, transactional ESP come Mailgun/Postmark/SES). Accetta una lista di destinatari dove ogni elemento porta il proprio leadId univoco (per tracking analytics differenziato), i propri valori di sostituzione template (es. { "nome": "Mario", "azienda": "ACME", "settore": "Edilizia" }) e opzionalmente un proprio override di subject — utile per A/B testing del soggetto su sottoinsiemi della lista. Il loop di invio è serializzato con throttling configurabile in mail/ora (default 60, sotto la soglia Gmail di 100/h per evitare flag reputation IP) e jitter random ±20% sul delay tra invii (defense contro detection pattern automation di Gmail Postmaster Tools). Backoff esponenziale (5s → 30s → 2m → 10m) su HTTP 429 oppure SMTP 421 (Service not available, troppe connessioni), con retry budget configurabile (default 3 retry per destinatario). Budget temporale globale: se l'esecuzione supera maxRunMinutes (default 50 minuti per stare sotto al timeout 60min default di nginx/Cloudflare), i destinatari non ancora processati vengono restituiti nel response array con flag requeued=true + last_error per essere ripresi dal cron upstream nel run successivo — pattern resumable enterprise vs all-or-nothing che blocca su grosse liste. GDPR gate identico al sibling singolo: requireConsent=true (default) richiede consentVerified=true per OGNI singolo destinatario della lista, non solo globale; un destinatario senza consenso viene saltato e segnato come { status: "skipped", reason: "missing_consent" } senza fallire l'intero batch. Output: { stats: { sent, failed, retried, skipped, requeued, totalMs, effectiveRatePerHour, avgLatencyMs }, results: [{ recipient, leadId, status, messageId?, trackingIds?, error?, attempts }] }. Use case: SaaS B2B drip campaign onboarding con 500 trial new signup/settimana → invio 60/h × 8h/giorno distribuiti su 2 giorni rispettando Gmail SLA; cold outreach lead scraped da LinkedIn con personalizzazione per settore — utile A/B test sul subject "Ciao Mario" vs "ACME — proposta per settore Edilizia"; newsletter mensile a 2000 iscritti con sottoinsiemi geografici (jitter randomizza l'ordine per non triggerare antispam su pattern "tutti gli @libero.it nei primi 30 minuti"); recall pre-scadenza abbonamenti con tracking apertura per identificare candidati lapsus alla cancellazione e prepare retention sales call.
