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?

È stato utile?

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:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top