l'invio della posta elettronica ed il servizio offerto da vari provider

marino51

Utente Attivo
28 Feb 2013
2.903
160
63
Lombardia
ciao,

frequentando mrWebmaster da un po' di tempo, ho notato che molti post, trattano problemi che sorgono con l'invio delle email
vorrei quindi trattare un argomento che molto raramente è presente nelle guide di aiuto e supporto

l'invio della posta elettronica ed il servizio offerto da vari provider,

il provider può avere identità diverse,
può essere un proprio pc o un proprio server (azienda), su cui è stato installato il software di gestione della posta
ma può essere anche un servizio "intrinseco", cioè che non vedo, perchè offerto ad esempio in un pacchetto di hosting
oppure può essere un fornitore specifico, vedi gmail, web.de, alice, tiscali e tutti quelli che vi vengono in mente

anche l'utente che invia la posta può avere identità diverse,
la persona che utilizza un client di posta è il classico utente
ma anche lo script che manda la "conferma di registrazione", o più in generale, che invia una mail è l'utente della posta
in qualunque forma venga inviata una mail, chi la invia è "l'utente"


esiste quindi un rapporto diretto tra il servizio della posta elettronica e ciascun utente

come molti altri servizi, anche la posta richiede l'autenticazione dell'utente,
autenticazione che può avvenire con una connessione al servizio non protetta o protetta da crittografia

chi sceglie se usare la connessione protetta o non ?
il provider del servizio, anche in funzione di qualche "feature" che vogliamo utilizzare


proviamo a fare il parallelo con un servizio che tutti conoscono,

accedo al database con un driver (mysql, mssql, oracle ... )
accedo al servizio di posta senza nessun driver, il servizio è codificato internazionalmente

definisco l'host su cui è presente il servizio che mi permette l'accesso al database
lo stesso devo fare per accedere al servizio di posta elettronica (servizio SMPT)

definisco il database a cui devo accedere
per la posta definisco la porta di accesso che mi identifica se connessione crittografata o non

definisco le credenziali di accesso al database, userID e password
lo stesso devo fare per il servizio di posta

per la connessione al database ho detto tutto,
per la connessione crittografata alla posta devo indicare quale sicurezza viene usata


quando un servzio di posta elettronica funziona senza autenticazione, questa è sicuramente "intrinseca"
vedi quanto detto sopra


ecco un esempio dei parametri da utilizzare per la connessione al servizio di posta elettronica

PHP:
$eM_Host     = "smtp.example.com";  // SMTP servizio mail
$eM_Port     = 587;                 // 25, 465, 587
$eM_Auth     = true;                // false (25) true (465, 587)
$eM_Secure   = "tls";               // "" (25) "ssl" (465) "tls" (587)
$eM_username = "name@example.com";  // utente conosciuto dal servizio mail usato
$eM_password = "password";          // password dell'utente

siamo tornati all'invio della mail in modo specifico con php,
posso utilizzare la funzione mail() disponibile nativamente nel linguaggio
oppure sfruttare una "classe" resa disponibile da chi l'ha sviluppata, che aiuta nel compito

nel file allegato a questo post, è possibile trovare,
1) un file di "configurazione", che contiene i parametri di alcuni servizi sicuramente provati
2) uno script per provare connessioni "semplici" usando la funzione mail()
3) uno script per provare connessioni usando la classe PHPMailer (con anche invio di allegati)

lo scopo è provare il sevizio che si vuole utilizzare, quando si incontrano difficoltà
spesso ho visto creare piccoli script di test in alternativa al principale, anch'essi non funzionanti,
solo perchè non si conosce o non si valuta con attenzione l'autenticazione

la "poca" esperienza, mi dice che la funzione mail() nativa può essere usata con profitto quando la mail è semplice
viceversa con allegati o funzionalità "spinte" meglio usare PHPMailer come suggerito in molti post

PHPMailer offre (non documentata) la verifica delle operazioni di invio con,
PHP:
$mail->SMTPDebug = 4;  // attiva log dell'invio, ELIMINARE quando si mette in "produzione"

gli script dovrebbero essere facili da comprendere, in ogni caso, questo post è aperto a tutti i contributi
di chi volesse integrare e/o meglio chiarire le mie "poche idee e ben confuse"
ciao
Marino
 

Allegati

Ultima modifica: