PHPプログラミングでは、バッチで電子メールを送信することは一般的な要件です。特に、多数のユーザーにメールを送信する必要がある場合、電子メールを送信しすぎているため、パフォーマンスのボトルネックを引き起こしたり、電子メールサービスプロバイダーの制限を超えたりする可能性があります。電子メールの送信タスクを効果的に管理するために、PHPでarray_chunk()関数を使用してユーザー配列を複数の小さな配列に分割し、バッチごとに電子メールバッチを送信できます。これにより、コードのパフォーマンスが向上し、一度に多数の電子メールを送信することによる問題が回避されます。
この記事では、array_chunk()を使用して配列を分割し、メール()関数と組み合わせてバッチでメールを送信する方法を示します。
まず、すべての受信者情報を含む配列が必要です。すべてのメールアドレスを含む配列が既にあるとします。その後、 array_chunk()を使用して、この配列を複数の小さな配列に分割できます。各小さな配列サイズは、指定したバッチサイズです。
たとえば、1000のメールボックスの配列があり、100のメールボックスをバッチに送信すると、 array_chunk()は、元の配列を100のメールボックスを含む10のサブアレイに分割します。各サブアレイを反復し、バッチごとに電子メールバッチを送信できます。
まず、複数の電子メールアドレスを備えた配列があるとします。
$emails = [
"user1@example.com", "user2@example.com", "user3@example.com",
"user4@example.com", "user5@example.com", "user6@example.com",
// その他のメールアドレス...
];
次に、 array_chunk()関数を使用して、バッチごとに2つのメールボックスに分割します。
$chunks = array_chunk($emails, 2);
上記のコードを実行した後、 $チャンクは2次元配列になり、各サブアレイには2つの電子メールアドレスが含まれます。
Array
(
[0] => Array
(
[0] => user1@example.com
[1] => user2@example.com
)
[1] => Array
(
[0] => user3@example.com
[1] => user4@example.com
)
[2] => Array
(
[0] => user5@example.com
[1] => user6@example.com
)
// 他のサブアレイ...
)
すべてのメールアドレスを複数のバッチに分割したので、 Mail()関数を使用してバッチごとに電子メールバッチを送信できます。各バッチをループして、各バッチのメールを送信します。
$subject = "重要な通知";
$message = "これは私たちの最新の通知です,関連コンテンツをご覧ください。";
$headers = "From: no-reply@m66.net";
foreach ($chunks as $chunk) {
// 毎回バッチで電子メールを送信します
foreach ($chunk as $email) {
if (mail($email, $subject, $message, $headers)) {
echo "に送信されたメール: $email<br>";
} else {
echo "メールの送信に失敗しました: $email<br>";
}
}
}
上記のコードは、最初に電子メールの件名、コンテンツ、ヘッダー情報を設定し、次にネストされたforeachループを使用して、各サブアレイの電子メールアドレスに電子メールを1つずつ送信します。
array_chunk()の2番目のパラメーターを制御することにより、各送信のバッチサイズを柔軟に制御できます。たとえば、バッチごとに50メールを送信する必要がある場合は、2番目のパラメーターを50に設定するだけです。
$chunks = array_chunk($emails, 50);
これにより、各バッチには最大50のメールアドレスが含まれます。サーバーとメーリングサービスの制限に応じて、この値を調整して、パフォーマンスと利用可能なリソースのバランスをとることができます。
array_chunk()関数を使用することにより、多数のメールボックスアドレスを含むアレイを複数の小さなサブアレイに簡単に分割し、バッチごとに電子メールバッチを送信できます。この方法は、一度に多数の電子メールを送信することによって引き起こされるパフォーマンスボトルネックを回避するのに役立つだけでなく、電子メールの頻度をよりよく制御することで、電子メールの成功率を高めることができます。
もちろん、SMTP構成、電子メールコンテンツのセキュリティ、受信者のプライバシー保護など、実際の使用では、より多くの要因を考慮する必要がある場合があります。電子メール送信の有効性をさらに最適化する必要がある場合は、Batch Mail Deffircy、メール追跡、分析などのより高度な機能を提供するSendGrid、MailGunなどのプロフェッショナルな電子メール送信サービスを使用することを検討できます。