2013-08-17 23 views
15

Sono nuovo su php. Stavo cercando di inviare mail da php usando questo codice.php invia mail da localhost

<?php 

    $to  = '[email protected]'; 
    $subject = 'The subject'; 
    $message = 'hello'; 
    $headers = 'From: [email protected]' . "\r\n" . 
     'Reply-To: [email protected]' . "\r\n" . 
     'X-Mailer: PHP/' . phpversion(); 

    mail($to, $subject, $message, $headers); 

?> 

devo modificare le impostazioni in php.ini

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = localhost 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
sendmail_from = [email protected] 

& in sendmail.ini

# A freemail service example 
account Gmail 
tls on 
tls_certcheck off 
host smtp.gmail.com 
from [email protected] 
auth on 
user [email protected] 
password xxxxxxxxx 

# Set a default account 
account default : Gmail 

Ora codice viene eseguito con successo, ma io non sto ottenendo alcuna mail.

+3

È necessario installare il server di posta su localhost. [PHPMailer] (http://sourceforge.net/projects/phpmailer/) – Bora

+0

@Bora: Penso che sia possibile aggiungere il server di posta smmail o gmail o yahoo. Non è vero? –

+0

o utilizzare un server smtp remoto, come GMAIL –

risposta

1

La funzione non funzionerà sul tuo localhost, in quanto il locahost non funziona come server SMTP, carica il tuo contenuto su un server valido con SMTP installato, quindi effettua la chiamata.

0

Il server non dispone di server di posta locale.

ci sono poche soluzioni:

  • installare il server di posta locale se si dispone di diritti sufficienti
  • modificare le impostazioni PHP per utilizzare altri server di posta (altri quelli a base auth-mailserver aperto o come Gmail, Yahoo ecc
  • Utilizzare una delle librerie di posta disponibili che supporta IMAP/POP3 per gestire l'invio di posta. SwiftMailer o Pear Mail sono uno dei più usati.
4

È necessario modificare il file php.ini:

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = localhost 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
sendmail_from = [email protected] 

Non funzionerà se localhost è impostato, per questo motivo il cambiamento al server di posta.

+0

È possibile specificare qualcosa per utenti di Ubuntu o Linux? –

0

tenta di impostare sotto cose nel vostro php.ini,

  1. "SMTP" a "mail.YourDomain.com"
  2. "smtp_port" a "25"

O voi può impostare questa opzione utilizzando script php anche,

// si prega di specificare la posta altri server di posta che si intende utilizzare server o. (ad esempio Gmail, Yahoo)

012.
ini_set("SMTP","mail.YourDomain.com"); 

// Specificare un numero SMTP 25 e 8889 sono porte SMTP valide.

ini_set("smtp_port","25"); 
3

Non si dispone di server SMTP installato per impostazione predefinita, quindi non è possibile inviare e-mail direttamente da localhost. Puoi configurare il server SMTP su locale o utilizzare server SMTP di terze parti. Dai uno sguardo allo http://www.mittalpatel.co.in/php_send_mail_from_localhost_using_gmail_smtp che ti fornisce informazioni su come inviare posta da localhost usando un server SMTP di terze parti.

+1

il link in questo commento mi ha aiutato a configurare il mio smtp localmente su un mac. Grazie! – surfbird0713

+0

@ surfbird0713 felice di sapere che ti ha aiutato! :-) –

0

Ecco il link che mi dà la risposta:

Installare il "sendmail falso per le finestre".Se non si utilizza XAMPP è possibile scaricarlo qui: http://glob.com.au/sendmail/sendmail.zip

Modificare il file php.ini per utilizzarlo (commentata le altre linee):

funzione di posta elettronica

Solo per Win32.

SMTP = smtp.gmail.com 

smtp_port = 25 

Solo per Win32.

sendmail_from = <e-mail username>@gmail.com 

Solo per Unix. Si può fornire argomenti così

(default: "sendmail -t -i"). 

sendmail_path = "C:\xampp\sendmail\sendmail.exe -t" 

(ignorare il "solo Unix" po ', dal momento che in realtà stiamo usando sendmail)

È quindi necessario configurare il file "sendmail.ini" nella directory in cui sendmail è stato installato:

sendmail

smtp_server=smtp.gmail.com 
smtp_port=25 
error_logfile=error.log 
debug_logfile=debug.log 
auth_username=<username> 
auth_password=<password> 
force_sender=<e-mail username>@gmail.com 
0

ho avuto questo problema delle ultime settimane, le mie scatole di CentOS, la condivisione di questo per gli altri che hanno anche problemi con la posta() in PHP non se nding ... Questo risolve il problema per tutti i miei script php mail().

// Enable the sendmail in selinux 
setsebool -P httpd_can_sendmail 1 

// Add the following to /etc/postfix/main.cf 
relayhost = smtp.server.com 

// Then from command line 
service postfix restart