PHP & Others

e-mail 체크함수 & 특정메일거부

컨텐츠 정보

본문

## 메일 패턴 검사

if(ereg("(^[_0-9a-zA-Z-]+(\\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)$)", $email, $regs)) {

} else {
  echo "

            <script>
            alert('메일?...')
          history.back();
          </script>";
  exit;

}

## 특정메일 거부

if(eregi("(@hanmail\\.net|@daum\\.net)", $email, $regs)) {

  echo "

            <script>
            alert('[★] 한메일은 메일을 보낼수 없는 관계로 \\\\n\\\\n 부득이 다른 메일로 부탁합니다.')
          history.back();
          </script>";
  exit;

}

===================================================
언젠가 메일링을 보냈는데 한메일은 전부 보내지 못하더군요..
이상해서 하나만 보냈는데도 보내지 못하더군요..
아마도 한메일은 1000통이 아니라 한통이라도 이젠 다 막았나 봅니다.

그래서 만들어 본겁니다.

앞부분의 메일 패턴검사는 흔한 소스이고 그다음에 나온건 제가 만든겁니다.
if(ereg("(@hanmail\\.net|@daum\\.net)"... 에서
더 막고자 한다면 ()안에 |@netian\\.com|@naver\\.com...  이런식으로 집어 넣어 주면 됩니다.
점 앞에 \\은 특수문자를 일반 문자로 인식시켜주기 위한 표기입니다.
고민을 많이 한건데 하고 보니 너무 간단 하더라구요..
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
참고 강진사랑님과 이대규님의 지적으로
ereg() 에서 eregi()로 바꾸었습니다. 즉 소문자만이 아닌 대소문자를 체크토록 한겁니다.
















실제로 계정이 존재하는지 까지는 확인 못합니다만,
해당 서버에 메일 관련 dns 세팅이 되어 있는지 까지는 확인이 됩니다.
레퍼런스 뒤지다가 발견해서 계속 이걸로 쓰고 있습니다.

error_popup() 는 자작이니 exit() 정도로 바꿔주시면 됩니다.


function check_email($email)
{
if(!preg_match('/^[a-z\\d_\\-]+@(.*)$/', $email, $record))
error_popup(eEMAILERROR, qEXIT|qBACK);
if(checkdnsrr($record[1], 'MX'))
return(true);
if(checkdnsrr($record[1], 'A'))
return(true);
if(checkdnsrr($record[1], 'CNAME'))
return(true);
error_popup($record[1].' '.eEMAILSERVERROR, qEXIT|qBACK);
}

$email = strtolower(trim($email));
check_email($email);

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
길 위에서 어둠을 맞는다면 너는 진실로 너 혼자가 아닌 한 사람의 친구가 필요하다는 것을 깨닫게 될 것이다.