2012-03-30 2 views
0

현재 PHP 메일 스크립트가 작동하고 있습니다. 예상대로 작동합니다. 그러나 오늘날 서버는 대용량 메일러로 블랙리스트에 올라있는 IP 주소를 피하기 위해 PHP를 통해 분당 약 15 개의 이메일만을 제공한다는 예기치 않은 문제가 발생했습니다.PHP 확인 전자 메일, 서버 전자 메일 제한 허용

우회하지 않으려 고합니다. 우리는이 한도를 초과하지 않도록하는 방법을 원합니다. 그래서 내 질문은, 몇 가지 유형의 지연을 설정하는 데 사용할 수있는 방법은 지난 60 초 동안 보낸 이메일 수를 기반으로합니다.

$user_verification_key = md5(rand(1000, 100000000000)); 
db_query("insert into user_t values('" . $user . "', '" . $userinfo['first_name'] . "', '" . $fb_userinfo['last_name'] . "', '" . $userinfo['username'] . "', '" . $_POST['user_country'] . "', '" . $_POST['regions'] . "', '" . $_POST['paypal'] . "', '" .  $user_verification_key . "', 0)"); 
$msg = "Thankyou for signing up:\n\n 
     Click the link to verify your account: http://website.com/verify.php?user=" . $fb_userinfo['id'] . "&verify=" . $user_verification_key . " 
     "; 

mail($_POST['paypal'], 'Account verfication', $msg, 'From: ' . '[email protected]'); 
    header("location: index.php?page=home&msg=Congratulations, your account has been setup please verify your email address");   
+0

JangoMail.com의 인증 된 SMTP 릴레이를 고려해보십시오. 이러한 SMTP 릴레이는 훌륭한 전송 기능을 제공 할뿐 아니라 이러한 제한을 제거합니다. – gahooa

답변

2

한 가지 간단한 방법은 모든 처리되지 않은 전자를 저장하는 것입니다 :

(즉 db_query을 유의하시기 바랍니다가) SQL을 실행하기위한 올바른하지만 전문적인 기능은 다음

를 쿼리 (간체) 우리의 메일 스크립트입니다 - MySQL 데이터베이스에 메일을 보내고 cronjob을 사용하여 간격을두고 점진적으로 이동합니다 (매 10-15 분마다). 이렇게하면 호스팅 조건을 위반하지 않습니다.

cPanel을 사용하는 경우 cronjob을 설정하고 PHP 스크립트에 연결할 수 있기 때문에 이것은 매우 쉽습니다. 모든 스크립트는 DB에 연결하고 처리되지 않은 모든 전자 메일 (즉, 상태가 0 인 전자 메일)에 액세스하여 보내면됩니다. 루프를 반복하면서 상태를 1로 변경하십시오.

너무 익숙하지 않은 경우 cronjobs에 대한 자세한 내용을 확인하십시오 here.

+0

+1, 펀치에 나를 두들겨 라! 또한 APC 및 기타 공유 메모리 솔루션. –

+0

고마워,이게 가장 좋은 해결책 인 것 같아. 매우 감사. –

1

내가 보내는 모든 이메일을 데이터베이스에 저장 한 다음 매 1 (또는 2 분이 안전함)을 실행하는 cron을 사용하고 대기중인 이메일을 최대 15 개 보내는 것으로 생각할 수 있습니다.