Logo Informatizzati
Può capitare che un server di posta rifiuti la mail inviata attraverso php perchè non riconosce valido il mittente, che sotto debian/ubuntu è www-data@dominio.it.
Anche se si provvede a impostare il "From:" con un utente valido viene comunque letto il campo "envelope-from" che identifica l'utente che ha inviato la mail. Questo viene fatto diminuire la ricezione di spam.
E' possibile inviare una mail tramite il comando mail() di php impostando direttamente l'utente con il quale viene spedita per fare in modo che sia diverso dall'utente del "From" o comunque diverso dall'utente www-data. Per fare questo basta aggiungere alla stringa di invio il paramerto -f'utente@dominio.it' senza spazi.

//la variabile $mail_header raccoglie tutti gli header necessari per mandare una mail, mentre con l'opzione -f si imposta envelope-from
    $mail_header  = NULL;
    $mail_header .= "MIME-Version: 1.0<br>\n";
    $mail_header .= "Content-type: text/html; charset=iso-8859-1<br>\n";
    $mail_header .= 'From: "mittente@mittente.it" <mittente@mittente.it>'. "\n";
    $mail_header .= 'Reply-To: "'mittente@mittente.it" <mittente@mittente.it>' . "\n";
    $mail_header .= 'Return-Path: "mittente@mittente.it" <mittente@mittente.it>';
    $mail_header .= "\n";
mail($destinatario,$mail_oggetto,$messaggio,$header,"-f '" . utente@mittente.it . "'");


Nota: Questo quinto parametro è stato aggiunto in PHP 4.0.5. A partire da PHP 4.2.3, questo parametro è disabilitato in modalità safe_mode, se si cerca di usarlo comunque, la funzione mail() darà un messaggio di errore e restituirà FALSE.

Commenti offerti da CComment