2011-08-10 38 views
0

私は与えられたアドレスに電子メールを送信する非常に単純なPHPコードを書こうとしています。PHPで電子メールを送信

I have this code: 
<?php 
mail('[email protected]','Test','Test OK'); 
echo 'Message sent!'; 
?> 

'[email protected]'の代わりに私自身の電子メールを使用しました。

私はSnow LeopardでMacを実行しているので、foundationphpに記載されている指示に従ってPHPを有効にしました。

「メッセージが送信されました」という理由でphpが機能しているようです。エコー、しかし、私は電子メールを受信して​​いない。

これは何故ですか?私は間違って何をしていますか?

ありがとうございます!

+0

メールが最初にfalseを返すことを確認します。実際のエラーを調べるには、システムログ(通常はLinuxの/ var/log/messages、SendMailを使用している場合)を確認します。また、php.iniのエラー報告がE_ALLに設定されていることを確認してください。 – bcoughlan

+0

Sendmailは通常 'messages'ではなく'/var/log/maillog'にログを記録しますか?これはLinuxではありませんが、OS Xです。 –

+1

smtpサーバをインストールして設定していない可能性があります。 Gmailのアカウントを持っている場合は、このコード(http://stackoverflow.com/questions/712392/send-email-using-gmail-smtp-server-from-php-page/2748837#2748837)を使ってGmailのsmtpを使用してみてくださいその場合は参照してください。 –

答えて

5

まず、戻り値mailを一切チェックしていないと、「メッセージが送信されました!」というメッセージが表示されます。たとえそれが偽に戻ったとしても。

if (mail('[email protected]','Test','Test OK')) { 
    echo 'Message sent!'; 
} 

でもmail trueを返した場合第二には、それだけでメールが宛先に到達していないこと、それはMTAにメールを渡したことを意味します。 PHPがメールを正常に引き渡すなら、あなたのメールログを見てそこでデバッグする必要があります。これは、PHPコード/設定に問題がないためです。

2

これをローカルマシンで実行している場合は、電子メールがどこにも行かない可能性があります。 PHPのmail関数は、適切な送信メール接続があるかどうかを知りません。メールがローカルキューに正常に入力されたかどうかしかわかりません。

メールが配信されたという理由だけで、メールが実際に目的の宛先に届くわけではありません。 - http://php.net/mail

サーバ以外のマシンの場合は、リモートSMTPサーバ(通常はISPのもの)を設定するのが最も良い方法です。 http://email.about.com/od/emailprogrammingtips/qt/Configure_PHP_to_Use_a_Remote_SMTP_Server_for_Sending_Mail.htm

+0

私のローカルマシンで実行しています。私はこれが実際の問題だと思う。私はSMTPサーバーを設定しようとします。ありがとう! –

1

「メッセージが送信されました!」というメッセージが表示されます。

if (mail(...)) 
{ 
    echo 'Message sent!'; 
} 
else 
{ 
    echo "Fail!"; 
} 

これはあなたに正しいフィードバックを与えるはずです。

関連する問題