PHP 프로그래밍에서는 전자 메일을 배치로 전송하는 것이 일반적인 요구 사항입니다. 특히 많은 수의 사용자에게 이메일을 보내야 할 때는 성능 병목 현상이 발생하거나 너무 많은 이메일을 보내기 때문에 이메일 서비스 제공 업체의 제한을 초과 할 수 있습니다. 전자 메일 전송 작업을 효과적으로 관리하려면 PHP의 Array_Chunk () 함수를 사용하여 사용자 배열을 여러 개의 작은 배열로 나누고 전자 메일 배치를 배치로 전송 할 수 있습니다. 이것은 코드의 성능을 향상시키고 한 번에 많은 수의 이메일을 보내면 발생하는 문제를 피합니다.
이 기사는 Array_Chunk ()를 사용하여 Array를 분할하고 Mail () 함수와 함께 배치로 메일을 보내는 방법을 보여줍니다.
먼저 모든 수신자 정보가 포함 된 배열이 필요합니다. 이미 모든 이메일 주소가 포함 된 배열이 있다고 가정합니다. 그런 다음 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 차원 배열이되며 각 서브 어레이에는 두 개의 이메일 주소가 포함됩니다.
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 () 함수를 사용하여 Batch로 이메일 배치를 보낼 수 있습니다. 우리는 각 배치를 통해 루프를하고 각 배치에 대해 메일을 보냅니다.
$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 루프를 사용하여 각 서브 어레이의 이메일 주소로 이메일을 하나씩 보냅니다.
Array_Chunk () 의 두 번째 매개 변수를 제어함으로써 각각의 전송의 배치 크기를 유연하게 제어 할 수 있습니다. 예를 들어, 배치 당 50 개의 메일을 보내야하는 경우 두 번째 매개 변수를 50으로 설정하십시오.
$chunks = array_chunk($emails, 50);
이런 식으로 각 배치에는 최대 50 개의 이메일 주소가 포함됩니다. 서버 및 우편 서비스의 한계에 따라이 값을 조정하여 성능 및 사용 가능한 리소스의 균형을 맞출 수 있습니다.
Array_Chunk () 함수를 사용하면 많은 수의 사서함 주소가있는 배열을 여러 개의 작은 서브 어레이로 쉽게 분할하고 전자 메일 배치를 배치별로 보낼 수 있습니다. 이 방법을 사용하면 한 번에 많은 수의 이메일을 전송하여 발생하는 성능 병목 현상을 피하는 데 도움이 될뿐만 아니라 이메일의 빈도를 더 잘 제어하여 이메일의 성공률을 높일 수 있습니다.
물론 SMTP 구성, 이메일 컨텐츠의 보안 및 수신자 개인 정보 보호와 같은 실제 사용에서 더 많은 요소를 고려해야 할 수도 있습니다. 전자 메일 전송 효과를 더욱 최적화 해야하는 경우 Batch Mail Delivery, Mail Tracking 및 Analysis와 같은보다 고급 기능을 제공하는 SendGrid, Mailgun 등과 같은 전문 이메일 보내기 서비스를 사용하는 것을 고려할 수 있습니다.