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
해가 들면 어떻고, 바람이 불면 어떻고, 눈이 오면 어떠랴. 해가 들어주어도 고맙고, 바람이 불어주어도 고맙고, 눈이 와주어도 고마울 뿐. 그렇다, 고맙지 않은 것이 없다. 밤은 밤이어서 고맙고, 새벽은 새벽이어서 고맙고, 낮은 낮이어서 고맙다. 아, 고마운 삼라만상이여! (정채봉)