2013-03-07 32 views
17

私はローカルでホストされているPHPコードで電子メールを送信したいと思います。私はこのコードを実行するとPHP:localhostでメールを送信

<?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を設定し、ローカルホストからメールを送信することはできません:グーグル、ヤフー...' –

+0

は、「メールサーバへの接続に失敗しました」...あなたがに接続するようにPHPを設定しましたlocalhostのメールサーバ、ポート25.このようなメールサーバをインストールしましたか? – eis

+0

実行中のシステムは何ですか? –

答えて

12

を試しいただきありがとうございます。

エラーメッセージには、localhost:25に接続できないというメッセージが表示されます。適切にあなた に接続することができるいくつかの他のSMTPサーバーを指すようにlocalhostのポート25

  • 変更設定のSMTPサーバを設定

    1. /インストール:

      は、したがって、あなたは、2つのオプションがあります

  • +13

    非常に有用な答えではありません。基本的には、それが動作していない場合、それを動作させるか、別のサーバを動作させる場合です。 – mgrenier

    +0

    @mgrenier - 他の答えとは対照的に?製品の推奨は話題になりません。 – Quentin

    +2

    @mgrenierさんのコメントとは対照的に、私はこれがおそらく最も基本的でありながらも有益な回答であることがわかりました。 "それは壊れた" .... "それを"簡単に私のために十分に修正します。 – jjonesdesign

    0

    はメールサーバのlocalhost:25を使用するように構成されたこの

    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

    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>'; 
    } 
    ?>