تشخیص ایمیل واقعی با php
تایید آدرس ایمیل سخت ولی یک کار مهم در دنیای وب است. یک ایمیل معتبر می توانید برای شما در یک بازایابی, سودآور باشد اما ایمیل نامعتبر هزینه ها و نتایج یک بازاریابی ایمیلی را خراب می کند.
مشابه آن, اعتبارسنجی ایمیل نیز از قابلیت های مهم و کاربردی در اپلیکیشن های تحت وب است.
در وبسایت نت پارادیس هم اوایل کار کاربران برای دانلود فایل ها از ایمیل های یکبارمصرف و حتی ایمیل های غیرواقعی استفاده می کردند که با اضافه کردن قابلیت فیلتر ایمیل ها این مشکل را رفع کردیم و باعث شدیم یک لیست پربازده از ایمیل علاقه مندان داشته باشیم.
تشخیص ایمیل واقعی با php به راحتی می توانید با تابع filter_var()
به همراه ثابت FILTER_VALIDATE_EMAIL
فیلتر شود. این تابع بررسی می کند که آیا فرمت نوشتاری آدرس ایمیل داده شده صحیح است یا خیر.
1
2
3
4
5
6
7
8
|
$email = “netparadis@example.com”;
// Validate email
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
echo “$email is a valid email address”;
}else{
echo “$email is not a valid email address”;
}
|
در آموزش اعتبارسنجی فرم ها در php بصورت مفصل در این مورد روش هایی را ارایه دادیم.این روش به تنهایی برای بررسی اینکه آدرس ایمیل واقعی و قابل دسترس است کافی نیست.
پس در این آموزش PHP , قصد داریم به شما نحوه تشخیص ایمیل واقعی با php را نشان بدیم.
در اسکریپت PHP اعتبارسنجی اینکه ایمیل واقعی و تقلبی ما از یک روش اثبات شده استفاده می کنیم که بسیاری از وب سرویس هایی که api پولی را ارایه می دهند معمولا از این روش بهره می برند.
در آموزش تشخیص ایمیل واقعی با php ما با چک کردن رکورد های MX DNS و دامنه, ایمیل را اعتبارسنجی می کنیم. این اسکریپت برای اعتبارسنجی (verify) ایمیل کاربر قبل از ارسال ایمیل و یا قرار دادن در دیتابیس مفید است.
کتابخانه تشخیص ایمیل واقعی با php
از کلاس VerifyEmail
برای چک کردن اینکه آدرس ایمیل صحیح است و از یک پروتکل SMTP واقعی استفاده می کند یا خیر, بهره بردیم.
شما فقط نیاز است که یک شی از کلاس را ساخته و تابع check()
را به کار ببرید
تابع check()
- بررسی فرمت نوشتاری آدرس ایمیل
- دریافت رکوردهای MX دامنه آدرس ایمیل
- اتصال به سرور SMTP با رکوردهای MX
- بر اساس کد پاسخ دریافتی (response code) :
- بررسی می کند که آدرس ایمیل ثبت شده صحیح است یا خیر.
- بررسی می کند دامنه ایمیل داده شده وجود دارد یا خیر.
- وضعیت ارسال پیام را چک می کند.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
class VerifyEmail {
protected $stream = false;
protected $port = 25;
protected $from = ‘root@localhost’;
protected $max_connection_timeout = 30;
protected $stream_timeout = 5;
protected $stream_timeout_wait = ;
protected $exceptions = false;
protected $error_count = ;
public $Debug = false;
public $Debugoutput = ‘echo’;
const CRLF = “rn”;
public $ErrorInfo = ”;
public function __construct($exceptions = false) { }
public function setEmailFrom($email) { }
public function setConnectionTimeout($seconds) {}
public function setStreamTimeout($seconds) {}
public function setStreamTimeoutWait($seconds) {}
public static function validate($email) { }
public function getMXrecords($hostname) {}
public static function parse_email($email, $only_domain = TRUE) {}
protected function set_error($msg) {}
public function isError() {}
protected function edebug($str) {}
public function check($email) { }
protected function _streamQuery($query) {}
protected function _streamResponse($timed = ) {}
protected function _streamCode($str) {}
}
class verifyEmailException extends Exception {
public function errorMessage() {}
}
?>
|
برای دانلود کامل کلاس به همراه متدها لطفا از باکس دانلود آخر این پست استفاده کنید.
مثال تشخیص ایمیل واقعی با php
استفاده از کتابخانه VerifyEmail
برای اعتبارسنجی ایمیل با php بسیار آسان است.
ابتدا یک شی از کلاس VerifyEmail
می سازیم. بعد Timeout
, debug
و آدرس ایمیل را مشخص می کنیم.
تابع check()
را صدا زده و آدرس ایمیلی که قصد داریم واقعی یا تقبلی بودن آن را بررسی کنیم, بهش پاس می دیم.
- اگر خروجی
true
بود, آدرس ایمیل داده شده صحیح و واقعی است. همچنین نشان می دهد که دامنه ایمیل وجود دارد و کاربر معتبر است. - اگر خروجی
false
بود, پس آدرس ایمیل نامعتبر و غیر واقعی است.
اگر تابع check()
خروجی false
را برگشت دهد, می توانید از تابع validate()
برای چک کردن اینکه فرمت ایمیل صحیح است یا خیر اما کاربر موردنظر در دامنه اشاره شده وجود ندارد, استفاده کنید.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// Include library file
require_once ‘VerifyEmail.class.php’;
// Initialize library class
$mail = new VerifyEmail();
// Set the timeout value on stream
$mail->setStreamTimeoutWait(20);
// Set debug output mode
$mail->Debug= TRUE;
$mail->Debugoutput= ‘html’;
// Set email address for SMTP request
$mail->setEmailFrom(‘from@email.com’);
// Email to check
$email = ’email@example.com’;
// Check if email is valid and exist
if($mail->check($email)){
echo ‘Email .$email.‘> is exist!’;
}elseif(verifyEmail::validate($email)){
echo ‘Email .$email.‘> is valid, but not exist!’;
}else{
echo ‘Email .$email.‘> is not valid and not exist!’;
}
?>
|
امیدوارم از آموزش تشخیص ایمیل واقعی با php استفاده مفید را برده باشید.