2011-07-12 10 views
2

PHPメール機能を使用して電子メールを送信する必要があるスクリプトを作成しています。以下に書いてあるように、電子メールをGmailアカウントに送信するときに機能しますが、ドメイン上のアカウントは送信しません。私たちはExchangeサーバーを実行しています。今のところ、電子メールは_www @ serverから送信されます。誰もがPHPメールとExchange(または、おそらくはアンダースコアとExchangeで始まる電子メールアドレス)の問題を知っていますか?それとも別の問題がありますか?メール関数は何があってもtrueを返します。PHPメール機能が動作することがあります

は、SMTPサーバにメールをハンドオフするとき

ジェフ

$user = $_POST['email']; 

$to = "[email protected]"; 

$subject = "Request to Reset EduTube Password"; 

$body = "Thank you " . $_POST['email'] . " for using the EduTube Password Reset System.\n\n"; 
$body .= "Please click the following link, or copy & paste it into your browser to reset your password.\n\n"; 
$body .= "http://testing.domain.org/reset.php?user=" . $user; 

$headers = "From: [email protected]"; 

$from = "EduTube Password Reset System"; 

if (mail($to, $subject, $body, $headers)){ 

echo "Your email has been sent. Please check your inbox shortly."; 
echo "<br/><a href='http://testing.domain.org'>Click</a>"; 

} 
+0

'mail'はすでにfalseを返していますか、「ただ配信されていません」というメッセージですか? – hakre

+0

Exchangeログを確認できますか? 'mail'は、メールが送信のために受け入れられたときのみ' true'を返します。 –

+0

@hakre mail関数は常にtrueを返します。アカウントが自分のGmailアカウントの場合、私は電子メールを受け取ります。それが私の仕事の勘定であれば、私はしません。私は迷惑メールなどをチェックしました。また、私が知ることができるサーバログには何もありません。 –

答えて

10

メール()の配信機能が終了、ありがとうございます。その唯一の責任は、あなたの封筒を取って角の郵便箱に落とすという現実の同等のものです。残りの郵便サービス(そのボックスを空にする、処理センターを通して実行する、受信者の国/都市に送るなど)は、mail()のスコープの外にあります。封筒がメールボックスに落ちる限り、mail()はtrueを返し、配送されたふりをします。

あなたのSMTPサーバーのログを調べて、本当にメールに何が起こったのか確認してください。たぶんそれは受信者によって迷惑メールとマークされ、バウンスされた可能性があります。たぶん、どこかのキューなどに詰まっているかもしれません...ログだけがこれを伝えます - PHPで見る/できることは無駄です。PHPとmail()はメールの送受信処理の1%他の99%で何かが間違っています。

+0

追加: 'Return-Path'ヘッダーを追加すると、バウンスされたメッセージを実際の受信トレイに配信するのに便利です。 – hakre

+0

@hakre - 多くのサーバーはバウンスレポートを送信しないように設定されています –

+0

@adam:これは、私が必要としていた何回も何かを追跡するのに役立ちました。ログをチェックするほうがはるかに優れていますが、ログにメッセージを残していても、一部のサーバーが削除されてしまうのですか? – hakre

関連する問題