2012-11-02 11 views
7

Ho cercato dappertutto per questo e io veramente voglio risolvere questo. In passato ho appena finito di utilizzare un servizio SMTP come SendGrid per PHP e un plugin di posta come SwiftMailer. Comunque voglio usare PHP.Come posso usare la funzione PHP Mail() all'interno di PHP-FPM? Su Nginx?

Fondamentalmente il mio setup (io sono nuovo di configurazione del server, e questo è il mio setup personale a seguito di una tutorial)

Nginx 
Rackspace Cloud 
PHP 5.3 PHP-FPM 
Ubuntu 11.04 

mie phpinfo() restituisce questo riguardo le voci di posta:

mail.log      no value 
mail.add_x_header   On 
mail.force_extra_parameters no value 

sendmail_from no value 
sendmail_path /usr/sbin/sendmail -t -i 

SMTP  localhost 
smtp_port 25 

Can qualcuno aiutatemi perché il Mail() non funziona - il mio script funziona su tutti gli altri siti, è un normale comando di posta. Devo impostare i log o abilitare alcune porte PHP sul server?

Il mio script di esempio

<? 
    # FORMS VARS 

    // $to = $customers_email; 
    // $to = $customers_email; 

    $to = $_GET["customerEmailFromForm"]; 

    $subject = "Thank you for contacting Real-Domain.com"; 
    $message = " 
    <html> 
    <head> 
    </head> 
    <body> 
    Thanks, your message was sent and our team will be in touch shortly. 
    <img src='http://cdn.com/emails/thank_you.jpg' /> 
    </body> 
    </html> 
    "; 
    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $headers .= 'From: <[email protected]>' . "\r\n"; 

    // SEND MAIL 
    mail($to,$subject,$message,$headers); 

?> 

Grazie

risposta

12

quanto non v'è alcun valore per sendmail_from è necessario impostare uno in php.ini:

sendmail_from = "[email protected]" 

O nelle intestazioni quando si chiama a mail :

mail($to, $subject, $message, 'From: [email protected]'); 

L'indirizzo email deve seguire RFC 2822, ad esempio:

In mancanza di questo, avete in realtà installato un sistema di posta elettronica di lavoro?

In caso contrario, è possibile installare postfix con il seguente comando:

sudo apt-get install postfix

Vedi sotto per maggiori informazioni sulla configurazione di postfix per l'utilizzo con PHP in Ubuntu:

https://serverfault.com/questions/119105/setup-ubuntu-server-to-send-mail

+0

Vedere la risposta aggiornata con esempi. –

+0

Questo deve essere un vero indirizzo? – TheBlackBenzKid

+0

No, a condizione che non si desideri essere in grado di ricevere risposte. –

9

Se trovato che su una nuova installazione di Ubuntu 14.04 con nginx e PHP-FPM (senza apache), non sono stati installati né postfix né mailutils.

ho usato: sudo apt-get install postfix

(come nella risposta consigliato)

E

sudo apt-get install mailutils

per far funzionare tutto sul mio server. Entrambi erano richiesti. Una voce in PHP.ini (come menzionato nella risposta raccomandata) può anche aver aiutato, ma senza entrambi gli altri pacchetti, non avrebbe fatto la differenza.

+0

Grazie per il tuo feedback e intuizione – TheBlackBenzKid

+0

Prego. Dopo averlo configurato, ho scoperto che la posta dal mio server non veniva recapitata al mio dominio di posta elettronica principale (sebbene fosse stato consegnato ad altri domini). Risulta che postfix (di default) proverà a consegnare la posta localmente. La correzione per questo era di rimuovere il nome di dominio dal whoops – TheDavidJohnson

+0

! urtato il pulsante "Aggiungi commento" presto ci ... La correzione è stato quello di rimuovere il nome di dominio dal 'mydestination' parametri in questo file: '/etc/postfix/main.cf' – TheDavidJohnson

Problemi correlati