2013-08-17 7 views
15

Ich bin neu bei php. Ich habe versucht, Mail von PHP mit diesem Code zu senden.php send mail von 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); 

?> 

Ich habe ändern Einstellungen in der 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 

Jetzt Code läuft erfolgreich, aber ich bin keine Post bekommen.

+3

Sie müssen den Mailserver auf localhost installieren. [PHPMailer] (http://sourceforge.net/projects/phpmailer/) – Bora

+0

@Bora: Ich denke, es ist möglich, die Gmail oder Yahoo SMTP Mail-Server stattdessen hinzufügen. Ist es nicht? –

+0

oder verwenden Sie einen Remote-SMTP-Server, wie GMAIL –

Antwort

1

Die Funktion funktioniert nicht auf Ihrem localhost, da der locahost nicht als SMTP-Server funktioniert, laden Sie Ihren Inhalt auf einen gültigen Server mit installiertem SMTP und gehen Sie dann zum Mail-Aufruf.

0

Ihr Server hat keinen lokalen Mailserver.

Es gibt nur wenige Lösungen:

  • lokalen Mail-Server installieren, wenn Sie über ausreichende Rechte
  • Ihre PHP-Einstellungen ändern anderen E-Mail-Server (andere offener Mail-Server oder verwenden Auth-basiert ist wie Google Mail, Yahoo usw.)
  • Verwenden Sie eine der verfügbaren Mail-Bibliotheken, die IMAP/POP3 zur Verarbeitung von E-Mail-Nachrichten unterstützen. SwiftMailer oder Pear Mail sind eine der am häufigsten verwendeten.
4

Sie müssen die Datei php.ini ändern:

[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] 

Es wird nicht funktionieren, wenn localhost gesetzt ist, aus diesem Grund Änderung an Ihrem Mail-Server.

+0

Können Sie angeben etwas für Ubuntu oder Linux Benutzer? –

0

Versuchen unten Dinge in der php.ini zu setzen,

  1. "SMTP" auf "mail.YourDomain.com"
  2. "smtp_port" bis "25"

ODER Sie kann diese Option auch über das PHP-Skript setzen,

// Bitte geben Sie Ihren Mailserver oder einen anderen Mailserver an, den Sie verwenden werden (zB gmail, yahoo)

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

// Bitte geben Sie eine SMTP-Nummer an 25 und 8889 sind gültige SMTP-Ports.

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

Sie haben standardmäßig keinen SMTP-Server installiert, so dass Sie keine E-Mails direkt von localhost senden können. Entweder können Sie den SMTP-Server lokal einrichten oder SMTP-Server von Drittanbietern verwenden. Werfen Sie einen Blick auf http://www.mittalpatel.co.in/php_send_mail_from_localhost_using_gmail_smtp, die Ihnen Einblick darüber gibt, wie Sie E-Mails von localhost über SMTP-Server von Drittanbietern senden.

+1

der link in diesem kommentar half mir meine smtp lokal auf einem mac einzurichten. Vielen Dank! – surfbird0713

+0

@ surfbird0713 froh zu wissen, dass es dir geholfen hat! :-) –

0

Hier ist der Link, der mir die Antwort gibt:

die "fake sendmail für Fenster" Install.Wenn Sie nicht XAMPP verwenden Sie es hier zum Download: http://glob.com.au/sendmail/sendmail.zip

Ändern Sie die Datei php.ini, es zu benutzen (die anderen Zeilen auf Kommentar):

Mail-Funktion

Nur für Win32.

SMTP = smtp.gmail.com 

smtp_port = 25 

Nur für Win32.

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

Nur für Unix. Sie können Argumente auch

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

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

liefern (ignorieren Sie die „Unix nur“ wenig, da wir tatsächlich send verwenden)

Sie dann die „sendmail.ini“ Datei im Verzeichnis konfigurieren müssen, wo Sendmail installiert wurde:

send

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

ich dieses Problem hatte in den letzten Wochen, auf meinen centOS-Boxen, teilt dies auch für andere Probleme mit Mail() in pHP nicht se mit nding ... Das behebt das Problem für alle meine mail() PHP-Skripte.

// 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