2011-06-19 11 views
20

私は簡単な登録フォームをアクティベーションメールなどでスクリプトします。しかし何らかの理由でmail()が電子メールを送信しない、または私の3つの電子メールアカウント(hotmail、gmail、yahoo)がそれらを受信せず、したがってそれらをspamフォルダに入れない。PHP mail()が機能しません

コード:それは右、メール()がtrueを返すので、 '途中でメール' を出力

<?php 
    $mailto = '[email protected]'; 
    $subject = 'the subject'; 
    $message = 'the message'; 
    $from = '[email protected]'; 
    $header = 'From:'.$from; 

    if(mail($mailto,$subject,$message,$header)) { 
     echo 'Email on the way'; 
    } 
?> 

毎回?私は本当にそれを取得しない、私は(私はSMTPをブロックしなかったけれども)私の小さなスニッチをオフにしようとしました。

+3

ローカルコンピュータまたは実際のWebホストでこれをテストしていますか?ローカルマシン上にある場合は、メールを送受信するように設定されていない可能性があります。 – itsols

+0

php.iniファイルにsendmailを設定する方法は?これは* nixやWindowsでですか? –

+0

@ ETWW-Dave:最近のコンピュータで実際の 'sendmail'を見つけようと思っています;)しかし、はい、次のSMTPサーバーによって電子メールが拒否されていると思われます。 – Piskvor

答えて

0

あなたのメール設定のphpinfoおよび/またはphp.iniをチェックし、どのプログラムphpでもメールを送信できることを確認してください。このコマンドは、コマンドが実行された場合には成功しますが、メールが実際に出力されたかどうかはわかりません。

0

メールサーバーのメールログを確認してください。 Unix系システムでは、一般的に/ var/log/maillogです。 Windowsでは、誰が知っていますが、どこかにログがあるはずです。メールがTRUEを返している場合は、接続先のメールサーバーが最終的な配信のためにメールを受け取りました。その後、mail()はもはや何らかの形で関与しなくなり、実際の配信を行うのはSMTPサーバーに任されます。

実際には、mail()の文字をブロックしてメールボックスにドロップしていますか?それ以降のすべては、PHPのスコープとコントロールの外にあります。

1

ヘッダーに正しい行末文字を追加する必要がある場合があります。これは、\nまたは\r\n

13

this article by Jeff Atwoodを参照してください。

要約:あなたのコードが電子メールをメール転送エージェントに渡したという理由だけで、配信されるわけではありません。はい、mail()が真を返すということは、「が受け入れられました。が届いた」という意味です。つまり、「メールのように見えますが、試着します。送ってください。でもthe manual for mail() says:。

メールが配信のために受け入れられたからといって、それはがメールが実際に意図された宛先に到達することを意味していないことに注意することが重要です

Soooo:MTA(ローカルコンピュータから送信された電子メールですか)を確認し、ローカルアドレスに送信しようとします(ローカルの場合は配信されますか?)。メールクライアントからの電子メールをPHPスクリプトと同じ設定を使用して、小規模なメールホスティングに送信して、アンチスパムをオフにすることができます(ネットワーク外で配信されますか?)。また、その記事を読んで、そこに記載されている点を確認してください。

4

サーバがmail()を処理するように設定されていない可能性があります。

<?php 
    print phpinfo(); 
?> 

、これはおそらく、ローカルのメールキューに送信するように設定のLinuxサーバである場合sendmail_path

+13

次は何ですか?私の名前は/ usr/local/bin/phpsendmail_です – newbieguy

0

を見てください。私がこの問題を抱えていたら、私たちのISPのメールサーバを指し示すLinuxサーバによって使用されているDNSサーバにMXエントリを追加することによってそれを動作させました。

関連する問題