2013-03-07 13 views
17

Chciałbym wysłać e-mail za pośrednictwem kodu PHP hostowanego lokalnie.PHP: wyślij mail w localhost

<?php 
$email = "[email protected]"; 
$titre = "My subject"; 
$message = "Text message !"; 
mail($email, $titre, $message); 
?> 

Kiedy uruchomić ten kod, pojawia się następujący błąd:

Warning: mail() [<a href='function.mail'>function.mail</a>]: Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\... 

poszedłem do pliku php.ini i wydaje się być już dobrze skonfigurowane.

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

Jak mogę to naprawić?

Dziękuję

+0

nie można wysłać poczty z localhost, konfigurować innego SMTP na localhost 'np: google, yahoo ...' –

+0

„nie udało się podłączyć do serwera pocztowego” ... masz skonfigurowany do łączenia się z PHP a mailserver na localhost, port 25. Czy zainstalowałeś taki serwer? – eis

+0

jaki jest twój system operacyjny? –

Odpowiedz

12

jest skonfigurowany do korzystania localhost:25 na serwerze pocztowym.

Komunikat o błędzie informuje, że nie może połączyć się z localhost:25.

Dlatego masz dwie opcje:

  1. install/prawidłowo skonfigurować serwer SMTP na localhost Port 25
  2. zmienić konfigurację aby wskazać jakiegoś innego serwera SMTP, które można połączyć
+13

Niezbyt przydatna odpowiedź. Zasadniczo powiedziałeś, że jeśli nie działa, to spraw, aby działał lub sprawił, żeby działał inny serwer. – mgrenier

+0

@mgrenier - W przeciwieństwie do jakiej innej odpowiedzi? Rekomendacja produktu nie będzie tematem. – Quentin

+2

Wbrew temu, co powiedział @mgrenier, uznałem, że jest to prawdopodobnie najbardziej podstawowa, ale informatywna odpowiedź online lol. "jego zepsuło się" .... "napraw to" wystarczająco proste dla mnie. – jjonesdesign

0

spróbować tej

ini_set("SMTP","aspmx.l.google.com"); 
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; 
$headers .= "From: [email protected]" . "\r\n"; 
mail("[email protected]","test subject","test body",$headers); 
+0

To nie zadziałało. – ravisoni

5

Aby to zrobić, musisz zainstalować lokalny serwer pocztowy. Jeśli chcesz wysłać go na zewnętrzny adres e-mail, może to skończyć się niechcianymi wiadomościami e-mail lub może nie dotrzeć wcale.

Dobry serwer pocztowy, który używam (używam go na Linuksie, ale jest także dostępny dla Windows) jest Axigen: http://www.axigen.com/mail-server/download/

Być może trzeba jakieś doświadczenia z serwera pocztowego, aby go zainstalować, ale kiedy to działa, może zrobić z tobą wszystko, co chcesz.

5

Spędziłem wiele godzin. Nie dostałem błędów, ale e-maile nigdy nie były wysyłane. W końcu znalazłem rozwiązanie i chciałbym się z nim podzielić.

<?php 
include 'nav.php'; 
/* 
    Download PhpMailer from the following link: 
    https://github.com/Synchro/PHPMailer (CLick on Download zip on the right side) 
    Extract the PHPMailer-master folder into your xampp->htdocs folder 
    Make changes in the following code and its done :-) 

    You will receive the mail with the name Root User. 
    To change the name, go to class.phpmailer.php file in your PHPMailer-master folder, 
    And change the name here: 
    public $FromName = 'Root User'; 
*/ 
require("PHPMailer-master/PHPMailerAutoload.php"); //or select the proper destination for this file if your page is in some //other folder 
ini_set("SMTP","ssl://smtp.gmail.com"); 
ini_set("smtp_port","465"); //No further need to edit your configuration files. 
$mail = new PHPMailer(); 
$mail->SMTPAuth = true; 
$mail->Host = "smtp.gmail.com"; // SMTP server 
$mail->SMTPSecure = "ssl"; 
$mail->Username = "[email protected]"; //account with which you want to send mail. Or use this account. i dont care :-P 
$mail->Password = "trials.php.php"; //this account's password. 
$mail->Port = "465"; 
$mail->isSMTP(); // telling the class to use SMTP 
$rec1="[email protected]"; //receiver. email addresses to which u want to send the mail. 
$mail->AddAddress($rec1); 
$mail->Subject = "Eventbook"; 
$mail->Body  = "Hello hi, testing"; 
$mail->WordWrap = 200; 
if(!$mail->Send()) { 
echo 'Message was not sent!.'; 
echo 'Mailer error: ' . $mail->ErrorInfo; 
} else { 
echo //Fill in the document.location thing 
'<script type="text/javascript"> 
         if(confirm("Your mail has been sent")) 
         document.location = "/"; 
     </script>'; 
} 
?>