php inviare il codice di posta non funziona
Domanda
$to = "jijodasgupta@gmail.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
echo("pMessage successfully sent!/p");
} else {
echo("pMessage delivery failed.../p");
}
ha scritto un codice sendmail php di base che, ma mi dà il seguente errore:
Attenzione: mail () [function.mail]: "sendmail_from" non impostato in php.ini o personalizzato "Da:" intestazione mancante in C: \ xampp \ htdocs \ mail.php sulla linea 5 Il recapito di messaggi non è riuscita ...
Ho cambiato il file `` php.ini e messo sendmail_from=jijodasgupta@gmail.com
ma ancora il problema persiste.
Scrivere la sceneggiatura di posta per la prima volta.
Sto facendo qualcosa di sbagliato? C'è un modo migliore per fare questo?
Soluzione
additional_headers (opzionale)
String da inserire a fine l'intestazione e-mail.
Questo è in genere utilizzato per aggiungere il supplemento intestazioni (Da, Cc e Ccn). multiplo intestazioni supplementari devono essere separate con un CRLF (\ r \ n).
Nota: Quando si invia la posta, la posta deve contenere un'intestazione Da. Questo può essere impostato con il parametro additional_headers, o di un default può essere impostato in php.ini. Non riuscendo a fare questo si tradurrà in un messaggio di errore simile a Warning: mail (): "sendmail_from" non impostato in php.ini o personalizzato "From:" mancante. L'intestazione From imposta anche Return-Path sotto Windows.
Mi auguro che aiuta.
Altri suggerimenti
In primo luogo tutto, controllare si è modificato il corretto php.ini - aggiungi phpinfo();
alle informazioni diagnostiche output dello script, tra cui la posizione del php.ini. Si dovrebbe anche essere in grado di vedere il valore "sendmail_from" configurato anche qui.
In caso contrario, fornire un'intestazione Da, come indicato dalla usoban
$hdrs="From: jijodasgupta@gmail.com";
mail($to, $subject, $body, $hdrs);
Se si è modificato il file php.ini corretto e non riflette la modifica, si potrebbe desiderare di riavviare il servizio web, come molti ambienti caricheranno solo il php.ini all'avvio del server.
Ho incontrato lo stesso problema ed è finito per essere perché il mio server è stato utilizzato il account@servername
come da indirizzo di posta elettronica, anche se ho specificato mio in intestazioni.
La risposta che ho trovato da qualche altra parte è stato quello di aggiungere un quinto parametro alla chiamata di posta per forzare il sistema di utilizzare la dall'indirizzo email che ho specificato:
$from = 'fromemail@domain.com'
$xheaders = "From: " . $from . " <" . $from . ">\n";
$i = mail("$useremail","$subject","$content",$xheaders,'-f fromemail@domain.com');
Invece di impostare l'indirizzo di modulo in php.ini, basta inviare nelle intestazioni come usoban detto invece.
Questo vi farà risparmiare mal di testa quando si ospita un altro sito nella stessa configurazione e dimentica di impostare le intestazioni prossima volta.
PHP funzione mail () genera un sacco di problemi. Quando finalmente farlo funzionare sul vostro server, si noterà che le email finiscono in cartelle di spam degli utenti.
mi sento di raccomandare per inviare la posta utilizzando una di quelle librerie PHP SMTP invece:
- PHPMailer - standard de facto
- http://swiftmailer.org/ - un approccio più moderno, base di utenti ancora più piccolo