|
|||
|
Ciao a tutti,
sto costruendo un semplice form HTML per farmi inviare email di feedback direttamente dal mio sito web servendomi della funzione mail di PHP. Il problema che ho riscontrato è dato dal mancato riconoscimento delle informazioni aggiuntive dell'header. Segue il codice PHP che in questo caso presenta informazioni statiche: <?php $to = 'myAddress@myDomain.com'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: theWebmaster' . "\r\n"; $headers .= 'Reply-To: webmaster@example.com'; mail($to, $subject, $message, $headers); ?> La mail mi viene inviata senza problemi con subject e contenuto corretti, ma le informazioni dell'header sono errate, in particolare nel mio caso ottengo: From: theWebmaster@perseus.dnsplan.com e nessuna informazione di Reply-To Vorrei sapere se qualcuno ha riscontrato un problema analogo e come è riuscito a risolverlo. Grazie Sync |
|
|||
|
Grazie Morphey per la rapida risposta domenicale.
Ho provato ad aggiungere nell'header anche il 'Return-Path:' settandolo uguale al 'Reply-to:'. Per sicurezza, anche se non dovrebbe avere alcuna influenza, ho utilizzato un indirizzo di posta esistente. Nel campo 'From:' ho usato un nome qualsiasi, dato che è il nome che compare per indicare il mittente, senza alcuna reale rilevanza per quanto riguarda l'indirizzo di posta. Purtroppo il risultato non è cambiato, di seguito il nuovo codice: Codice:
<?php $to = 'miaEmailEsistente@mioDominioEsistente.it'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: nomeQualunque' . "\r\n"; $headers .= 'Reply-To: emailEsistente@dominioEsistente.it' . "\r\n"; $headers .= 'Return-Path: emailEsistente@dominioEsistente.it'; mail($to, $subject, $message, $headers); ?> e tutto il resto viene ignorato. Accade la stessa cosa anche con un altro dominio registrato presso di voi hostato su un server differente. In quel caso ottengo: From: nomeQualunque@echos.dnshighspeed.com e tutto il resto viene ignorato. Grazie Sync |
|
||||
|
Ciao,
invia un ticket a supporto@serverplan.com e vediamo direttamente il codice scritto in modo da verificare se il problema è lato-server o qualche errore nel codice che viene valutato. Posteremo qui la risoluzione del problema in modo da aiutare altri con lo stesso. |
|
|||
|
Ciao a tutti,
credo di aver trovato una soluzione al problema modificando le informazioni inserite nell'header, e settando la variabile sendmail_from prima dell'invio dell'email. Funziona sia in un comune webmail, sia in Thunderbird, anche se la prima volta riconosce la mail come Junk. Una volta fatta riconoscere come valida, il problema è risolto. Di seguito il codice: Codice:
<?php
$eol = "\r\n";
// variabili settate attraverso un form html
$from = utf8_decode(trim(stripslashes($_POST['sFrom'])));
$subject = utf8_decode(trim(stripslashes($_POST['sSubject'])));
$replyTo = utf8_decode(trim(stripslashes($_POST['sReplyTo'])));
$message = utf8_decode(trim(stripslashes($_POST['sMessage'])));
$message .= $eol.$eol;
// indirizzo email esistente a cui inviare la mail
$to = "mioIndirizzoEmail@mioDominio.com";
$headers = "From: ".$from."<".$replyTo.">".$eol;
// informazioni per settare l'indirizzo a cui rispondere
$headers .= "Reply-To: ".$from."<".$replyTo.">".$eol;
$headers .= "Return-Path: ".$from."<".$replyTo.">".$eol;
// informazioni per aiutare ad evitare i filtri anti spam
$headers .= "Message-ID: <".time()."-".$replyTo.">".$eol;
$headers .= "X-Mailer: PHP v".phpversion().$eol;
ini_set(sendmail_from, $replyTo);
if (mail($to, $subject, $message, $headers)) {
echo "<p>Email inviata con successo</p>";
}
else {
echo "<p>Invio email fallito</p>";
}
ini_restore(sendmail_from);
?>
Sync |