ホームページ  >  記事  >  バックエンド開発  >  PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。

PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。

WBOY
WBOYオリジナル
2023-09-19 09:16:551769ブラウズ

PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。

PHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。

Webアプリケーションを開発する際、登録確認やパスワードのリセット、通知など、ユーザーとのコミュニケーションのためにメールの送信が必要になることが多く、メール機能は欠かせないものです。ただし、電子メールが実際に正常に送信されたかどうかを確認できない場合があるため、電子メールの検出を実行して、電子メールが正常に送信されたかどうかを判断する必要があります。この記事では、PHPを使用してこの機能を実装する方法を紹介します。

1. SMTP サーバーを使用して電子メールを送信する

SMTP プロトコルは信頼性の高い電子メール送信メカニズムを提供するため、まず、SMTP サーバーを使用して電子メールを送信する必要があります。 PHP では、SMTP クラス ライブラリを使用してこの関数を実装できます。

require 'path/to/phpmailer/autoload.php';

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

$mail = new PHPMailer(true);
try {
    $mail->SMTPDebug = 0;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.example.com';                      // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'your-email@example.com';           // SMTP username
    $mail->Password = 'your-email-password';              // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    $mail->setFrom('your-email@example.com', 'Your Name');
    $mail->addAddress('recipient@example.com', 'Recipient Name');
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'Test Subject';
    $mail->Body    = 'This is a test email.';

    $mail->send();
    echo 'Email has been sent.';
} catch (Exception $e) {
    echo 'Email could not be sent. Error: ', $mail->ErrorInfo;
}

このコードは、PHPMailer クラス ライブラリを使用し、SMTP サーバーの関連情報を構成し、テスト電子メールを送信します。

2. 電子メール ステータスの検出

電子メールを送信しても、その電子メールが実際に受信されたことを意味するわけではないため、電子メールが正常に送信されたかどうかを判断するには、電子メール ステータス検出を使用する必要があります。 PHP では、SMTP サーバーの応答を通じてメールのステータスを取得できます。

if ($mail->send()) {
    $response = $mail->getSMTPInstance()->getLastResponse();
    if (preg_match('/^250/', $response)) {
        echo 'Email has been sent.';
    } else {
        echo 'Email could not be sent. Response: ' . $response;
    }
} else {
    echo 'Email could not be sent. Error: ', $mail->ErrorInfo;
}

電子メールの送信後、このコードは getSMTPInstance() メソッドを通じて SMTP サーバーから応答を取得し、正規表現を使用して応答が 250# で始まるかどうかを判断します。 ##.そうであれば、電子メールは正常に送信されたことを意味します。

3. メール配信状況フィードバック

SMTP サーバーの応答によってメールが正常に送信されたかどうかを判断するだけでなく、メール配信状況フィードバックを通じてより詳細な情報を取得することもできます。 PHP では、これは受信確認メールを使用して実現できます。

$mail->addCustomHeader('Return-Receipt-To: your-email@example.com');
$mail->addCustomHeader('Disposition-Notification-To: your-email@example.com');

if ($mail->send()) {
    echo 'Email has been sent.';
} else {
    echo 'Email could not be sent.';
}

このコードは、電子メールを送信する前に、

addCustomHeader() メソッドを通じて受信電子メールに関する情報を追加します。受信者がメールを開いて既読を確認すると、受信メールが届き、メールが受信され読まれたかどうかを確認できます。

概要:

上記の方法により、電子メールが正常に送信されたかどうかを判断できます。実際の開発では、さまざまなニーズに基づいて適切な電子メール検出方法を選択し、電子メールの信頼性と適時性を確保できます。

(注: 上記の例の電子メール アドレスとパスワードは実際の電子メール アドレスとパスワードに置き換える必要があります。また、SMTP サーバーが正しく構成されていることを確認してください。)

以上がPHP 電子メール検出: 電子メールが正常に送信されたかどうかを判断します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。