亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

PHPメール機(jī)能がメールを完全に送信できない
P粉340264283
P粉340264283 2023-08-29 11:27:53
0
1
554
<p><br /></p> <pre class="brush:php;toolbar:false;"><?php $name = $_POST['名前']; $email = $_POST['email']; $message = $_POST['メッセージ']; $from = 'From: yoursite.com'; $to = 'contact@yoursite.com'; $subject = 'お客様からのお問い合わせ'; $body = "差出人: $namen 電子メール: $emailn メッセージ:n $message"; if ($_POST['submit']) { if (mail ($to, $subject, $body, $from)) { echo '<p>メッセージは送信されました!</p>'; } それ以外 { echo '<p>問題が発生しました。戻ってやり直してください!</p>'; } } ?></pre> <p>簡単なメールフォームを作成しようとしています。フォーム自體は私の <code>index.html</code> ページにありますが、別の「送信ありがとうございます」ページ、<code>thankyou.php</code> に送信されます。 PHP コードが埋め込まれています。 コードは完全に送信されますが、電子メールは送信されません。この問題はどうすれば解決できますか? </p>
P粉340264283
P粉340264283

全員に返信(1)
P粉518799557

この回答の一部は mail() 関數(shù)自體の使用にのみ適用されますが、これらのトラブルシューティング手順の多くは任意の PHP メール システムに適用できます。 嗯>

スクリプトが電子メールを送信できない理由はいくつかあります。明らかな構(gòu)文エラーがない限り、これらを診斷するのは困難です。そうでない場合は、以下のチェックリストを參照して、遭遇する可能性のある落とし穴を探してください。

エラー報(bào)告が有効になっていて、すべてのエラーを報(bào)告するように設(shè)定されていることを確認(rèn)してください

エラー報(bào)告は、PHP で発生する一般的なエラーだけでなく、コード內(nèi)のバグを根絶するためにも重要です。これらのエラーを受信するには、エラー報(bào)告を有効にする必要があります。次のコードを PHP ファイルの先頭 (またはメインの構(gòu)成ファイル) に配置すると、エラー報(bào)告が有効になります。

リーリー

參照 PHP で有用なエラー メッセージを取得するには? この回答 詳細(xì)については。

必ず mail() 関數(shù)を呼び出してください

これはばかげているように思えるかもしれませんが、よくある間違いはコード內(nèi)に mail() 関數(shù)を?qū)g際に配置するのを忘れることです。コメントアウトされていないことを確認(rèn)してください。

mail()function

を正しく呼び出してください。

mail 関數(shù)は 3 つの必須パラメーターと、オプションの 4 番目と 5 番目のパラメーターを受け取ります。 mail() への呼び出しに少なくとも 3 つの引數(shù)がないと、呼び出しは失敗します。

mail() への呼び出しが正しいパラメータを正しい順序で提供しない場合も、呼び出しは失敗します。

サーバーのメールログを確認(rèn)してください

Web サーバーは、Web サーバーを介して電子メールを送信するすべての試行を記録する必要があります。これらのログの場所は狀況によって異なります (サーバー管理者に場所を問い合わせる必要がある場合があります) が、通常はユーザーのルート ディレクトリの logs の下にあります。中には、電子メールの送信試行に関連してサーバーによって報(bào)告されたエラー メッセージ (存在する場合) が表示されます。

ポート接続が失敗していないか確認(rèn)してください

ポートのブロックは、SMTP を使用して電子メールを送信するコードを統(tǒng)合する際に、ほとんどの開発者が直面する非常に一般的な問題です。また、これはサーバーのメール ログで簡単に追跡できます (前述したように、メール ログ サーバーの場所はサーバーごとに異なる場合があります)。共有ホスティング サーバーを使用している場合、ポート 25 と 587 は引き続きデフォルトでブロックされます。このブロックは、ホスティング プロバイダーによって意図的に行われます。これは一部の専用サーバーにも當(dāng)てはまります。これらのポートがブロックされている場合は、ポート 2525 を使用して接続してみてください。ポートもブロックされていることが判明した場合、唯一の解決策は、ホスティング プロバイダーに連絡(luò)してこれらのポートのブロックを解除することです。

ほとんどのホスティング プロバイダーは、送信されるスパムからネットワークを保護(hù)するために、これらの電子メール ポートをブロックします。

通常/TLS 接続にはポート 25 または 587 を使用し、SSL 接続にはポート 465 を使用します。ほとんどのユーザーは、一部のホスティング プロバイダーによって設(shè)定されたレート制限を回避するために、ポート 587 を使用することをお?jiǎng)幛幛筏蓼埂?

エラー抑制演算子を使用しないでください

エラー抑制演算子 @ が PHP の式の前に追加されると、その式によって生成される可能性のあるエラー メッセージは無視されます。この演算子が必要な狀況がありますが、メール の送信は の 1 つではありません。

コードに @mail(...) が含まれている場合は、デバッグに役立つ重要なエラー メッセージが隠れている可能性があります。 #@ を削除し、エラーが報(bào)告されるかどうかを確認(rèn)します。

特定の失敗の直後に

error_get_last() を使用する場合のみ。 Check

mail()

戻り値

mail() 関數(shù): これは注目に値します:

戻り値
    FALSE
  • を受け取った場合は、メールを受け入れるサーバーにエラーがあることがわかります。これはコーディングの問題ではなく、サーバー構(gòu)成の問題である可能性があります。この問題が発生する理由を確認(rèn)するには、システム管理者に問い合わせる必要があります。 戻り値
  • TRUE
  • を受け取った場合でも、電子メールが送信されるわけではありません。これは単に、電子メールが PHP 経由でサーバー上の適切なハンドラーに正常に送信されたことを意味します。 PHP の制御を超えて電子メールの送信を妨げる障害ポイントは他にもたくさんあります。
  • したがって、
FALSE

は正しい方向を示すのに役立ちますが、TRUE は必ずしもメールが正常に送信されたことを意味するわけではありません。注目に値します! ホスティングプロバイダーが電子メールの送信を許可しており、メール送信を制限していないことを確認(rèn)してください

多くの共有 Web ホスト、特に無料の Web ホスティング プロバイダーは、サーバーからの電子メールの送信を許可していないか、一定期間內(nèi)に送信できる數(shù)を制限しています。これは、スパマーがその安価なサービスを利用することを制限するために、彼らが懸命に取り組んでいるからです。

ホストに電子メール制限があるか、電子メールの送信をブロックしていると思われる場合は、よくある質(zhì)問をチェックして、そのような制限がリストされているかどうかを確認(rèn)してください。それ以外の場合は、サポートに連絡(luò)して、電子メールの送信に制限があるかどうかを確認(rèn)する必要がある場合があります。

スパム フォルダーを確認(rèn)し、メールがスパムとしてマークされるのを防ぎます

PHP (およびその他のサーバーサイド プログラミング言語) 経由で送信された電子メールは、さまざまな理由から受信者のスパム フォルダーに到達(dá)してしまうことがよくあります。コードのトラブルシューティングを行う前に、必ずそこを確認(rèn)してください。

PHP 経由で送信された電子メールが受信者のスパム フォルダーに送信されないようにするには、PHP コードで行うことや、電子メールがスパムとしてマークされる可能性を最小限に抑えるためにできることがいくつかあります。

マイケル?デ?メア

良いヒントは次のとおりです: このトピックの詳細(xì)については、「プログラムによって送信された電子メールが自動(dòng)的にスパムとしてマークされないようにする方法」を參照してください。

。

すべての電子メールヘッダーが提供されていることを確認(rèn)してください

一部のスパム ソフトウェアは、「From」や「Reply」などの一般的なヘッダーが欠落しているメッセージを拒否します。

リーリー

メールヘッダーに構(gòu)文エラーがないことを確認(rèn)してください

無効なヘッダーは、ヘッダーがまったくないのと同じくらい問題です。 1 文字でも間違っていると、電子メールが正常に送信されなくなる可能性があります。 PHP

はこれらのエラーを

検出しないため、構(gòu)文が正しいことを再確認(rèn)してください。

リーリー 偽のものを使用しないでください 送信者:

送信者

メッセージには From:Sender が必要ですが、任意の

値をそのまま使用することはできません。特に、ユーザーが指定した送信者アドレスは、メッセージをブロックする信頼できる方法です:

リーリー

原因: ネットワークまたは送信メール サーバーは SPF/DKIM ホワイトリストに登録されていないため、@hotmail または @gmail アドレスを擔(dān)當(dāng)するふりをすることができません。未設(shè)定の From: 送信者ドメインからのメッセージをサイレントにドロップする場合もあります。

受信者の値が正しいことを確認(rèn)してください

問題は、電子メール受信者の値が間違っているという単純な場合もあります。これは、間違った変數(shù)が使用されていることが原因である可能性があります。

リーリー

この問題をテストする別の方法は、受信者の値を mail() 関數(shù)呼び出しにハードコードすることです:

リーリー

これは、すべての mail() パラメータに適用できます。

複數(shù)のアカウントに送信する

電子メール アカウントの問題のトラブルシューティングを行うには、異なる電子メール プロバイダーの複數(shù)の電子メール アカウントに電子メールを送信してください。 。電子メールがユーザーの Gmail アカウントに屆かない場合は、同じ電子メールを Yahoo アカウント、Hotmail アカウント、および通常の POP3 アカウント (ISP によって提供される電子メール アカウントなど) に送信します。

他の電子メール アカウントのすべてまたは一部に電子メールが屆いた場合、コードが電子メールを送信していることはわかりますが、電子メール アカウント プロバイダーが何らかの理由で電子メールをブロックしている可能性があります。どのメール アカウントにもメールが屆かない場合、問題はコードに関連している可能性が高くなります。

コードがフォームメソッドと一致していることを確認(rèn)してください

フォーム メソッドを POST に設(shè)定した場合は、必ず $_POST を使用してフォームの値を見つけてください。 GET に設(shè)定した場合、またはまったく設(shè)定しなかった場合は、必ず $_GET を使用してフォーム値を検索してください。

フォームアクション値が正しい場所を指していることを確認(rèn)してください

フォームの action 屬性に、PHP メール コードを指す値が含まれていることを確認(rèn)してください。

リーリー

ウェブホストが電子メールの送信をサポートしていることを確認(rèn)してください

一部の Web ホスティング プロバイダーは、サーバーを介した電子メール送信を許可または有効にしていません。この理由はさまざまですが、メールがブロックされている場合は、サードパーティを使用してメールを送信するという別の方法を使用する必要があります。

(オンライン サポートまたは FAQ にアクセスした後) テクニカル サポートに送信される電子メールには、サーバーで電子メール機(jī)能が利用可能かどうかが明記されています。

localhostメールサーバー

が設(shè)定されていることを確認(rèn)してください

WAMP、MAMP、または XAMPP を使用してローカル ワークステーションで開発する場合、ワークステーションに電子メール サーバーがインストールされていない可能性があります。そうしないと、PHP はデフォルトで電子メールを送信できなくなります。

この問題は、基本的なメール サーバーをインストールすることで解決できます。 Windows の場合は、無料の Mercury Mail を使用できます。

SMTP を使用して電子メールを送信することもできます。これを行う方法については、>Vikas Dwivedi によるこの素晴らしい回答を參照してください。

PHP カスタマイズを有効にする

mail.log

MTA および PHP ログ ファイルに加えて、

mail() 関數(shù) の特定のログを有効にすることもできます。完全な SMTP インタラクションを記録するわけではありませんが、少なくとも関數(shù)呼び出しパラメーターと呼び出しスクリプトを記録します。 リーリー

詳細(xì)については、http://php.net/manual/en/mail.configuration.php を參照してください。 (これらのオプションを php.ini または .user.ini または .htaccess で有効にすることが最善です。)

チェックメールテストサービス

さまざまな配信およびスパム チェック サービスを使用して、MTA/Web サーバーのセットアップをテストできます。通常、メール プローブを次のアドレスに送信し、後で配信レポートとより具體的な障害または分析を取得します:

別の電子メール プログラムを使用する

PHP の組み込み mail() 関數(shù)は便利で、通常は仕事を完了させますが、欠點(diǎn)もあります。幸いなことに、上記の問題の多くを処理するなど、より強(qiáng)力で柔軟性を提供する代替手段があります。

    最も人気のあるものは次のとおりです:
  • PHPMailer
  • 同様に強(qiáng)力:
  • SwiftMailer
  • または古い
  • PEAR::Mail も可能です。
これらはすべて、専門的な SMTP サーバー/サービス プロバイダーと組み合わせて使用??できます。 (一般的な 08/15 共有 Web ホスティング プランは、電子メールのセットアップ/構(gòu)成に當(dāng)たり外れがあるためです。)

最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート