php
  • email
  • 2013-03-07 215 views 17 likes 
    17

    我想通過本地託管的PHP代碼發送電子郵件。PHP:在本地主機發送郵件

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

    當我運行這段代碼,我得到以下錯誤:

    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:\... 
    

    我走進php.ini文件,它似乎是早已配置。

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

    我該如何解決這個問題?

    謝謝

    +0

    從本地主機本地主機'比如你不能發送郵件,配置一些其他SMTP:谷歌,雅虎......' – 2013-03-07 09:29:00

    +0

    「無法連接到郵件服務器」 ......你已經配置PHP連接到本地主機上的郵件服務器,端口25.您是否安裝了此類郵件服務器? – eis 2013-03-07 09:31:19

    +0

    你的運行系統是什麼? – 2013-03-07 09:33:13

    回答

    12

    它被配置爲使用localhost:25郵件服務器。

    錯誤消息說它無法連接到localhost:25

    因此,你有兩個選擇:

    1. 安裝/正確配置本地主機上的端口25
    2. 更改配置的SMTP服務器來指向一些其他的SMTP服務器,你可以連接到
    +13

    不是一個非常有用的答案。你基本上說如果它不工作,然後讓它工作或使另一臺服務器工作。 – mgrenier 2014-10-14 13:32:51

    +0

    @mgrenier - 與其他答案相反?產品推薦將成爲主題。 – Quentin 2014-10-14 13:35:52

    +2

    與@mgrenier的評論相反,我發現這可能是最基本但信息量最大的在線響應。 「它的破產」......「修復它」對我來說足夠簡單。 – jjonesdesign 2015-06-17 03:07:03

    0

    試試這個

    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

    這沒有奏效。 – ravisoni 2013-08-13 06:04:25

    5

    您將需要安裝本地郵件服務器才能執行此操作。 如果您想將其發送到外部電子郵件地址,它可能會以不需要的電子郵件形式出現,或者根本不會到達。

    一個好的郵件服務器,我用(我用它在Linux,但它也適用於Windows)是AXIGEN: http://www.axigen.com/mail-server/download/

    您可能需要使用郵件服務器來安裝它了一些經驗,但一旦它的工作原理,你可以做任何你想要的東西。

    5

    我在這花了數小時。我曾經沒有得到錯誤,但郵件從未被髮送。最後,我找到了一個解決方案,我想分享它。

    <?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>'; 
    } 
    ?> 
    
    相關問題