PHP mail() 関数を使用してメールを送信する方法
PHP メールとは何ですか?
PHP メールは、PHP スクリプトから電子メールを送信するために使用される組み込みの PHP 関数です。
メール関数は次のパラメータを受け入れます。
- メールアドレス
- 件名
- メッセージ
- CC または BC のメールアドレス
- これは、重要なイベントをユーザーに通知するためのコスト効率の高い方法です。
- 提供されたコンテンツを電子メールで送信するお問い合わせフォームを Web サイトに用意して、ユーザーが電子メールで連絡できるようにします。
- 開発者はこれを使用してシステムエラーを電子メールで受信できます
- ニュースレターの購読者にメールを送信するために使用できます。
- これを使用して、パスワードを忘れたユーザーにパスワード リセット リンクを送信できます。
- アクティベーション/確認リンクをメールで送信するために使用できます。これは、ユーザーを登録し、メールアドレスを確認するときに便利です。
メールPHPを使用する理由とタイミング
PHP を使用したメールの送信
PHPのメール関数の基本構文は次の通りです。
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
ここに、
- 「$to_email_address」はメール受信者のメールアドレスです
- 「$subject」はメールの件名です
- 「$message」は送信するメッセージです。
- 「[$headers]」はオプションで、CC、BCCなどの情報を含めるために使用できます。
- CC はカーボン コピーの略語です。関係者にコピーを送信する場合に使用します。たとえば、会社に送信された苦情メールを苦情掲示板に CC として送信することもできます。
- BCC はブラインド カーボン コピーの略語です。CC に似ています。BCC セクションに含まれるメール アドレスは他の受信者には表示されません。
簡単な拡張で Mail Transmission プロトコル (SMTP)
PHPメーラーはSimpleを使用します Mail Transmission メールを送信するためのプロトコル (SMTP)。
ホストされているサーバーでは、SMTP 設定はすでに設定されています。
SMTP メール設定は、PHP インストール フォルダー内の「php.ini」ファイルから構成できます。
ローカルホストで SMTP 設定を構成する Windows で xampp を使用している場合は、「C:\xampp\php」ディレクトリで「php.ini」を見つけます。
- メモ帳またはテキスト エディタを使用して開きます。 この例ではメモ帳を使用します。 編集メニューをクリックします
- 「検索…」メニューをクリックします
- 検索ダイアログメニューが表示されます
- 「次を検索」ボタンをクリックします
- エントリを見つける
- [メール機能]
- ; XAMPP: 次のようなSMTPサーバーで作業する場合は、セミコロンを削除しないでください。 Mercury
- ; SMTP = ローカルホスト
- ; smtp_port = 25
- SMTP と smtp_port の前のセミコロンを削除し、SMTP を smtpサーバー ポートを SMTP ポートに設定します。 設定は次のようになります。
- SMTP = smtp.example.com
- smtp_port = 25
- 注意 SMTP 設定は、Web ホスティング プロバイダーから取得できます。
- サーバーに認証が必要な場合は、次の行を追加します。
- auth_username = example_username@example.com
- auth_password = example_password
- 新しい変更を保存します。
- 再起動 アパッチ サーバー。
PHP Mail 例
ここで、簡単なメールを送信する例を見てみましょう。
<?php $to_email = 'name @ company . com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply @ company . com'; mail($to_email,$subject,$message,$headers); ?>
出力:
Note: 上記の例では、4 つの必須パラメータのみを受け取ります。
上記の架空のメールアドレスを実際のメールアドレスに置き換える必要があります。
メールのユーザー入力のサニタイズ
上記の例では、簡潔にするために、電子メール アドレスやその他の詳細についてソース コード内でハードコードされた値を使用しています。
ユーザーが詳細を入力して送信するためのお問い合わせフォームを作成する必要があるとします。
- ユーザーが誤ってまたは意図的にヘッダーにコードを挿入すると、スパムメールを送信する可能性があります。
- このような攻撃からシステムを保護するには、メールを送信する前に値をサニタイズして検証するカスタム関数を作成できます。
組み込み関数 filter_var を使用して、電子メール アドレスを検証およびサニタイズするカスタム関数を作成しましょう。
Filter_var 関数 filter_var 関数は、ユーザー入力データをサニタイズおよび検証するために使用されます。
基本的な構文は次のとおりです。
<?php filter_var($field, SANITIZATION TYPE); ?>
ここに、
- 「filter_var(…)」は検証およびサニタイズ関数です。
- 「$field」はフィルタリングするフィールドの値です。
- 「SANITIZATION TYPE」は、フィールド上で実行されるサニタイズのタイプです。
- フィルター検証メール – 有効なメール アドレスの場合は true を返し、無効なメール アドレスの場合は false を返します。
- フィルター_サニタイズ_メール – 電子メール アドレスから不正な文字を削除します。info\@domain.(com) は info@domain.com を返します。
- FILTER_SANITIZE_URL – URL から不正な文字を削除します。 http://www.example@.comé は >http://www.example@.com を返します
- FILTER_SANITIZE_STRING – 文字列値からタグを削除します。 太字になります。
以下のコードは、カスタム関数を使用して安全なメールを送信します。
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name @ company . com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail '; $headers = 'From: noreply @ company. com'; //check if the email address is invalid $secure_check $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { //send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
出力:
セキュアー Mail
電子メールは送信中に意図しない受信者によって傍受される可能性があります。
これにより、電子メールの内容が意図しない受信者に公開される可能性があります。
セキュアメールは、ハイパーテキスト転送プロトコル セキュア (HTTPS) 経由で電子メールを送信することでこの問題を解決します。
HTTPS はメッセージを送信する前に暗号化します。
まとめ
- この PHP 組み込み関数mail()はPHPスクリプトからメールを送信するために使用されます。
- データの検証とサニタイズチェックは、安全なメールを送信するために不可欠です。
- PHP 組み込み関数 filter_var() は、データのサニタイズと検証を実行する使いやすく効率的な方法を提供します。