e-mail 체크함수 & 특정메일거부
컨텐츠 정보
- 16,686 조회
- 7 추천
- 목록
본문
## 메일 패턴 검사
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);
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
등록된 댓글이 없습니다.