Completed
Push — master ( 71997f...2bccb6 )
by Lars
03:27
created

EmailCheck   A

Complexity

Total Complexity 25

Size/Duplication

Total Lines 823
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 88%

Importance

Changes 9
Bugs 1 Features 3
Metric Value
wmc 25
c 9
b 1
f 3
lcom 1
cbo 1
dl 0
loc 823
ccs 44
cts 50
cp 0.88
rs 9.7391

5 Methods

Rating   Name   Duplication   Size   Complexity  
C isValid() 0 61 16
A isExampleDomain() 0 8 2
A isTypoInDomain() 0 8 2
A isTemporaryDomain() 0 8 2
A isDnsError() 0 8 3
1
<?php
2
3
namespace voku\helper;
4
5
use TrueBV\Punycode;
6
7
/**
8
 * E-Mail Check Class
9
 *
10
 * -> use "EmailCheck::isValid()" to validate a email-address
11
 *
12
 * @author      Lars Moelleken
13
 * @copyright   Copyright (c) 2015, Lars Moelleken (http://moelleken.org/)
14
 * @license     http://opensource.org/licenses/MIT	MIT License
15
 */
16
class EmailCheck
17
{
18
  public static $domainsExample = array(
19
      'test.de',
20
      'test.com',
21
      'test.net',
22
      'test.org',
23
      'example.de',
24
      'example.com',
25
      'example.net',
26
      'example.org',
27
  );
28
29
  /**
30
   * @var array
31
   *
32
   * here you can find more domains:
33
   * - https://github.com/vboctor/disposable_email_checker
34
   * - https://gist.github.com/michenriksen/8710649
35
   */
36
  public static $domainsTemporary = array(
37
      '0-mail.com',
38
      '0815.ru',
39
      '0815.ru0clickemail.com',
40
      '0clickemail.com',
41
      '0wnd.net',
42
      '0wnd.org',
43
      '10minutemail.com',
44
      '10minutemail.co.za',
45
      '20minutemail.com',
46
      '2prong.com',
47
      '30minutemail.com',
48
      '33mail.com',
49
      '3d-painting.com',
50
      '4warding.com',
51
      '4warding.net',
52
      '4warding.org',
53
      '60minutemail.com',
54
      '675hosting.com',
55
      '675hosting.net',
56
      '675hosting.org',
57
      '6paq.com',
58
      '6url.com',
59
      '75hosting.com',
60
      '75hosting.net',
61
      '75hosting.org',
62
      '7tags.com',
63
      '9ox.net',
64
      'a-bc.net',
65
      'afrobacon.com',
66
      'ag.us.to',
67
      'ajaxapp.net',
68
      'amilegit.com',
69
      'amiri.net',
70
      'amiriindustries.com',
71
      'anonbox.net',
72
      'anonymbox.com',
73
      'antichef.com',
74
      'antichef.net',
75
      'antispam.de',
76
      'armyspy.com',
77
      'atvclub.msk.ru',
78
      'azmeil.tk',
79
      'baxomale.ht.cx',
80
      'beefmilk.com',
81
      'binkmail.com',
82
      'bio-muesli.net',
83
      'bobmail.info',
84
      'bodhi.lawlita.com',
85
      'bofthew.com',
86
      'bootybay.de',
87
      'boun.cr',
88
      'bouncr.com',
89
      'brefmail.com',
90
      'broadbandninja.com',
91
      'bsnow.net',
92
      'bu.mintemail.com',
93
      'bugmenot.com',
94
      'bumpymail.com',
95
      'casualdx.com',
96
      'centermail.com',
97
      'centermail.net',
98
      'chogmail.com',
99
      'choicemail1.com',
100
      'consumerriot.com',
101
      'cool.fr.nf',
102
      'correo.blogos.net',
103
      'cosmorph.com',
104
      'courriel.fr.nf',
105
      'courrieltemporaire.com',
106
      'crazymailing.com',
107
      'cubiclink.com',
108
      'curryworld.de',
109
      'cust.in',
110
      'cuvox.de',
111
      'dacoolest.com',
112
      'dandikmail.com',
113
      'dayrep.com',
114
      'deadaddress.com',
115
      'deadspam.com',
116
      'despam.it',
117
      'despammed.com',
118
      'devnullmail.com',
119
      'dfgh.net',
120
      'digitalsanctuary.com',
121
      'dingbone.com',
122
      'discardmail.com',
123
      'discardmail.de',
124
      'disposableaddress.com',
125
      'disposableemailaddresses.com',
126
      'disposeamail.com',
127
      'disposemail.com',
128
      'dispostable.com',
129
      'dm.w3internet.co.uk',
130
      'dm.w3internet.co.ukexample.com',
131
      'dodgeit.com',
132
      'dodgit.com',
133
      'dodgit.org',
134
      'doiea.com',
135
      'donemail.ru',
136
      'dontreg.com',
137
      'dontsendmespam.de',
138
      'drdrb.com',
139
      'drdrb.net',
140
      'dump-email.info',
141
      'dumpandjunk.com',
142
      'dumpmail.de',
143
      'dumpyemail.com',
144
      'e-mail.com',
145
      'e4ward.com',
146
      'easytrashmail.com',
147
      'einrot.com',
148
      'email.net',
149
      'email60.com',
150
      'emaildienst.de',
151
      'emailias.com',
152
      'emailigo.de',
153
      'emailinfive.com',
154
      'emailmiser.com',
155
      'emailsensei.com',
156
      'emailtemporario.com.br',
157
      'emailto.de',
158
      'emailwarden.com',
159
      'emailx.at.hm',
160
      'emailxfer.com',
161
      'emeil.in',
162
      'emeil.ir',
163
      'emz.net',
164
      'enterto.com',
165
      'ephemail.net',
166
      'etranquil.com',
167
      'etranquil.net',
168
      'etranquil.org',
169
      'evopo.com',
170
      'explodemail.com',
171
      'fakeinbox.com',
172
      'fakeinformation.com',
173
      'fansworldwide.de',
174
      'fastacura.com',
175
      'fastchevy.com',
176
      'fastchrysler.com',
177
      'fastkawasaki.com',
178
      'fastmazda.com',
179
      'fastmitsubishi.com',
180
      'fastnissan.com',
181
      'fastsubaru.com',
182
      'fastsuzuki.com',
183
      'fasttoyota.com',
184
      'fastyamaha.com',
185
      'filzmail.com',
186
      'fixmail.tk',
187
      'fizmail.com',
188
      'fleckens.hu',
189
      'fr33mail.info',
190
      'frapmail.com',
191
      'front14.org',
192
      'fudgerub.com',
193
      'fux0ringduh.com',
194
      'garliclife.com',
195
      'gelitik.in',
196
      'get1mail.com',
197
      'get2mail.fr',
198
      'getairmail.com',
199
      'getonemail.com',
200
      'getonemail.net',
201
      'ghosttexter.de',
202
      'girlsundertheinfluence.com',
203
      'gishpuppy.com',
204
      'goemailgo.com',
205
      'gowikibooks.com',
206
      'gowikicampus.com',
207
      'gowikicars.com',
208
      'gowikifilms.com',
209
      'gowikigames.com',
210
      'gowikimusic.com',
211
      'gowikinetwork.com',
212
      'gowikitravel.com',
213
      'gowikitv.com',
214
      'great-host.in',
215
      'greensloth.com',
216
      'grr.la',
217
      'gsrv.co.uk',
218
      'guerillamail.biz',
219
      'guerillamail.com',
220
      'guerillamail.net',
221
      'guerillamail.org',
222
      'guerrillamail.biz',
223
      'guerrillamail.com',
224
      'guerrillamail.de',
225
      'guerrillamail.net',
226
      'guerrillamail.org',
227
      'guerrillamailblock.com',
228
      'gustr.com',
229
      'h.mintemail.com',
230
      'h8s.org',
231
      'haltospam.com',
232
      'hatespam.org',
233
      'hidemail.de',
234
      'hidzz.com',
235
      'hochsitze.com',
236
      'hotpop.com',
237
      'hulapla.de',
238
      'ieatspam.eu',
239
      'ieatspam.info',
240
      'ieh-mail.de',
241
      'ihateyoualot.info',
242
      'iheartspam.org',
243
      'imails.info',
244
      'inbax.tk',
245
      'inbox.si',
246
      'inbox2.info',
247
      'inboxalias.com',
248
      'inboxclean.com',
249
      'inboxclean.org',
250
      'incognitomail.com',
251
      'incognitomail.net',
252
      'incognitomail.org',
253
      'insorg-mail.info',
254
      'ipoo.org',
255
      'irish2me.com',
256
      'iwi.net',
257
      'jetable.com',
258
      'jetable.fr.nf',
259
      'jetable.net',
260
      'jetable.org',
261
      'jnxjn.com',
262
      'jourrapide.com',
263
      'junk1e.com',
264
      'kasmail.com',
265
      'kaspop.com',
266
      'keepmymail.com',
267
      'killmail.com',
268
      'killmail.net',
269
      'kir.ch.tc',
270
      'klassmaster.com',
271
      'klassmaster.net',
272
      'klzlk.com',
273
      'koszmail.pl',
274
      'kulturbetrieb.info',
275
      'kurzepost.de',
276
      'letthemeatspam.com',
277
      'lhsdv.com',
278
      'lifebyfood.com',
279
      'link2mail.net',
280
      'litedrop.com',
281
      'lol.ovpn.to',
282
      'lookugly.com',
283
      'lopl.co.cc',
284
      'lortemail.dk',
285
      'lr78.com',
286
      'm4ilweb.info',
287
      'ma1l.bij.pl',
288
      'maboard.com',
289
      'mail-temporaire.fr',
290
      'mail.by',
291
      'mail.mezimages.net',
292
      'mail2rss.org',
293
      'mail333.com',
294
      'mail4trash.com',
295
      'mailbidon.com',
296
      'mailblocks.com',
297
      'mailcatch.com',
298
      'maildrop.cc',
299
      'maileater.com',
300
      'mailed.in',
301
      'mailexpire.com',
302
      'mailfa.tk',
303
      'mailfreeonline.com',
304
      'mailimate.com',
305
      'mailin8r.com',
306
      'mailinater.com',
307
      'mailinator.com',
308
      'mailinator.net',
309
      'mailinator2.com',
310
      'mailincubator.com',
311
      'mailismagic.com',
312
      'mailme.ir',
313
      'mailme.lv',
314
      'mailmetrash.com',
315
      'mailmoat.com',
316
      'mailnator.com',
317
      'mailnesia.com',
318
      'mailnull.com',
319
      'mailshell.com',
320
      'mailsiphon.com',
321
      'mailslite.com',
322
      'mailtemp.info',
323
      'mailtothis.com',
324
      'mailzilla.com',
325
      'mailzilla.org',
326
      'mbx.cc',
327
      'mega.zik.dj',
328
      'meinspamschutz.de',
329
      'meltmail.com',
330
      'messagebeamer.de',
331
      'mierdamail.com',
332
      'mintemail.com',
333
      'mjukglass.nu',
334
      'mobi.web.id',
335
      'moburl.com',
336
      'moncourrier.fr.nf',
337
      'monemail.fr.nf',
338
      'monmail.fr.nf',
339
      'monumentmail.com',
340
      'msa.minsmail.com',
341
      'mt2009.com',
342
      'mt2014.com',
343
      'mx0.wwwnew.eu',
344
      'mycleaninbox.net',
345
      'mypartyclip.de',
346
      'myphantomemail.com',
347
      'myspaceinc.com',
348
      'myspaceinc.net',
349
      'myspaceinc.org',
350
      'myspacepimpedup.com',
351
      'myspamless.com',
352
      'mytempemail.com',
353
      'mytrashmail.com',
354
      'naver.com',
355
      'neomailbox.com',
356
      'nepwk.com',
357
      'nervmich.net',
358
      'nervtmich.net',
359
      'netmails.com',
360
      'netmails.net',
361
      'netzidiot.de',
362
      'neverbox.com',
363
      'no-spam.ws',
364
      'nobulk.com',
365
      'noclickemail.com',
366
      'nogmailspam.info',
367
      'nomail.xl.cx',
368
      'nomail2me.com',
369
      'nomorespamemails.com',
370
      'nospam.ze.tc',
371
      'nospam4.us',
372
      'nospamfor.us',
373
      'nospamthanks.info',
374
      'notmailinator.com',
375
      'nowmymail.com',
376
      'nullbox.info',
377
      'nurfuerspam.de',
378
      'nus.edu.sg',
379
      'nwldx.com',
380
      'objectmail.com',
381
      'obobbo.com',
382
      'odaymail.com',
383
      'oneoffemail.com',
384
      'onewaymail.com',
385
      'onlatedotcom.info',
386
      'online.ms',
387
      'oopi.org',
388
      'opayq.com',
389
      'ordinaryamerican.net',
390
      'otherinbox.com',
391
      'ourklips.com',
392
      'outlawspam.com',
393
      'ovpn.to',
394
      'owlpic.com',
395
      'pancakemail.com',
396
      'pimpedupmyspace.com',
397
      'pjjkp.com',
398
      'plexolan.de',
399
      'politikerclub.de',
400
      'poofy.org',
401
      'pookmail.com',
402
      'privacy.net',
403
      'privymail.de',
404
      'proxymail.eu',
405
      'prtnx.com',
406
      'punkass.com',
407
      'putthisinyourspamdatabase.com',
408
      'qq.com',
409
      'quickinbox.com',
410
      'rcpt.at',
411
      'reallymymail.com',
412
      'recode.me',
413
      'recursor.net',
414
      'regbypass.com',
415
      'regbypass.comsafe-mail.net',
416
      'rejectmail.com',
417
      'rhyta.com',
418
      'rklips.com',
419
      'rmqkr.net',
420
      'rppkn.com',
421
      'rtrtr.com',
422
      's0ny.net',
423
      'safe-mail.net',
424
      'safersignup.de',
425
      'safetymail.info',
426
      'safetypost.de',
427
      'sandelf.de',
428
      'saynotospams.com',
429
      'selfdestructingmail.com',
430
      'selfdestructingmail.org',
431
      'sendspamhere.com',
432
      'sharklasers.com',
433
      'shieldedmail.com',
434
      'shiftmail.com',
435
      'shitmail.me',
436
      'shortmail.net',
437
      'sibmail.com',
438
      'sify.com',
439
      'skeefmail.com',
440
      'slaskpost.se',
441
      'slopsbox.com',
442
      'slushmail.com',
443
      'smaakt.naar.gravel',
444
      'smapfree24.com',
445
      'smapfree24.de',
446
      'smapfree24.eu',
447
      'smapfree24.info',
448
      'smapfree24.org',
449
      'smashmail.de',
450
      'smellfear.com',
451
      'snakemail.com',
452
      'sneakemail.com',
453
      'sofimail.com',
454
      'sofort-mail.de',
455
      'sogetthis.com',
456
      'soodonims.com',
457
      'spam.la',
458
      'spam.su',
459
      'spam4.me',
460
      'spamavert.com',
461
      'spambob.com',
462
      'spambob.net',
463
      'spambob.org',
464
      'spambog.com',
465
      'spambog.de',
466
      'spambog.net',
467
      'spambog.ru',
468
      'spambox.info',
469
      'spambox.irishspringrealty.com',
470
      'spambox.org',
471
      'spambox.us',
472
      'spamcannon.com',
473
      'spamcannon.net',
474
      'spamcero.com',
475
      'spamcon.org',
476
      'spamcorptastic.com',
477
      'spamcowboy.com',
478
      'spamcowboy.net',
479
      'spamcowboy.org',
480
      'spamday.com',
481
      'spamex.com',
482
      'spamfree.eu',
483
      'spamfree24.com',
484
      'spamfree24.de',
485
      'spamfree24.eu',
486
      'spamfree24.info',
487
      'spamfree24.net',
488
      'spamfree24.org',
489
      'spamgoes.in',
490
      'spamgourmet.com',
491
      'spamgourmet.net',
492
      'spamgourmet.org',
493
      'spamherelots.com',
494
      'spamhereplease.com',
495
      'spamhole.com',
496
      'spamify.com',
497
      'spaminator.de',
498
      'spamkill.info',
499
      'spaml.com',
500
      'spaml.de',
501
      'spammotel.com',
502
      'spamobox.com',
503
      'spamoff.de',
504
      'spamslicer.com',
505
      'spamspot.com',
506
      'spamthis.co.uk',
507
      'spamthisplease.com',
508
      'spamtrail.com',
509
      'speed.1s.fr',
510
      'squizzy.de',
511
      'supergreatmail.com',
512
      'supermailer.jp',
513
      'superrito.com',
514
      'suremail.info',
515
      'tagyourself.com',
516
      'teewars.org',
517
      'teleworm.com',
518
      'teleworm.us',
519
      'tempalias.com',
520
      'tempe-mail.com',
521
      'tempemail.biz',
522
      'tempemail.com',
523
      'tempemail.net',
524
      'tempinbox.co.uk',
525
      'tempinbox.com',
526
      'temp-mail.ru',
527
      'tempmail.it',
528
      'tempmail2.com',
529
      'tempomail.fr',
530
      'temporarily.de',
531
      'temporarioemail.com.br',
532
      'temporaryemail.net',
533
      'temporaryforwarding.com',
534
      'temporaryinbox.com',
535
      'tempymail.com',
536
      'thanksnospam.info',
537
      'thankyou2010.com',
538
      'thisisnotmyrealemail.com',
539
      'throwawayemailaddress.com',
540
      'throam.com',
541
      'tilien.com',
542
      'tmail.com',
543
      'tmailinator.com',
544
      'toiea.com',
545
      'tradermail.info',
546
      'trash-amil.com',
547
      'trash-mail.at',
548
      'trash-mail.com',
549
      'trash-mail.de',
550
      'trash2009.com',
551
      'trashemail.de',
552
      'trashmail.at',
553
      'trashmail.com',
554
      'trashmail.de',
555
      'trashmail.me',
556
      'trashmail.net',
557
      'trashmail.org',
558
      'trashmail.ws',
559
      'trashmailer.com',
560
      'trashymail.com',
561
      'trashymail.net',
562
      'trbvm.com',
563
      'trillianpro.com',
564
      'turual.com',
565
      'twinmail.de',
566
      'tyldd.com',
567
      'uggsrock.com',
568
      'upliftnow.com',
569
      'uplipht.com',
570
      'venompen.com',
571
      'veryrealemail.com',
572
      'vidchart.com',
573
      'viditag.com',
574
      'viewcastmedia.com',
575
      'viewcastmedia.net',
576
      'viewcastmedia.org',
577
      'webm4il.info',
578
      'wegwerfadresse.de',
579
      'wegwerfemail.de',
580
      'wegwerfmail.de',
581
      'wegwerfmail.net',
582
      'wegwerfmail.org',
583
      'wetrainbayarea.com',
584
      'wetrainbayarea.org',
585
      'wh4f.org',
586
      'whatiaas.com',
587
      'whatpaas.com',
588
      'whyspam.me',
589
      'willselfdestruct.com',
590
      'winemaven.info',
591
      'wronghead.com',
592
      'wuzup.net',
593
      'wuzupmail.net',
594
      'www.e4ward.com',
595
      'www.gishpuppy.com',
596
      'www.mailinator.com',
597
      'wwwnew.eu',
598
      'xagloo.co',
599
      'xagloo.com',
600
      'xemaps.com',
601
      'xents.com',
602
      'xmail.com',
603
      'xmaily.com',
604
      'xoxy.net',
605
      'yep.it',
606
      'yogamaven.com',
607
      'yopmail.com',
608
      'yopmail.fr',
609
      'yopmail.net',
610
      'ypmail.webarnak.fr.eu.org',
611
      'yuurok.com',
612
      'zehnminutenmail.de',
613
      'zippymail.info',
614
      'zoaxe.com',
615
      'zoemail.com',
616
      'zoemail.org',
617
  );
618
619
  /**
620
   * @var array
621
   */
622
  public static $domainsTypo = array(
623
      '',
624
      '-online.de',
625
      '-tonline.de',
626
      'acor.de',
627
      'aecor.de',
628
      'ahoo.de',
629
      'al.com',
630
      'ao.com',
631
      'aol.cm',
632
      'aol.con',
633
      'aol.ocm',
634
      'aol.om',
635
      'aoll.com',
636
      'apl.com',
637
      'arco.de',
638
      'arocr.de',
639
      'aror.de',
640
      'feenet.de',
641
      'freeenet.de',
642
      'freeent.de',
643
      'freeet.de',
644
      'freemet.de',
645
      'freeneet.de',
646
      'freent.de',
647
      'frenet.de',
648
      'gm.de',
649
      'gm.net',
650
      'gm.xde',
651
      'gmc.de',
652
      'gmx.ded',
653
      'gmx.dw',
654
      'gmxx.de',
655
      'gmy.de',
656
      'gx.de',
657
      'hmx.de',
658
      'homail.de',
659
      'hotmai.de',
660
      'hotmal.de',
661
      'mx.de',
662
      'mx.net',
663
      'otmail.com',
664
      'r-online.de',
665
      'rcor.de',
666
      'reenet.de',
667
      't--online.de',
668
      't-0nline.de',
669
      't-nline.de',
670
      't-oline.de',
671
      't-omline.de',
672
      't-onine.de',
673
      't-onlien.de',
674
      't-onliine.de',
675
      't-onlin.de',
676
      't-onlinde.de',
677
      't-onlinr.de',
678
      't-onlione.de',
679
      't-onlline.de',
680
      't-onlne.de',
681
      't-onlone.de',
682
      't.-online.de',
683
      't.online.de',
684
      'tonline.de',
685
      'wb.de',
686
      'we.de',
687
      'web.ded',
688
      'web.dw',
689
      'wed.de',
690
      'weeb.de',
691
      'wen.de',
692
      'wweb.de',
693
      'yaho.de',
694
      'yahooo.de',
695
      'yaoo.de',
696
      'yhoo.de',
697
      'yahhoo.de',
698
  );
699
700
  protected static $useDnsCheck = true;
701
702
  /**
703
   * check if the email is valid
704
   *
705
   * @param string     $email
706
   * @param bool|true  $useExampleDomainCheck
707
   * @param bool|true  $useTypoInDomainCheck
708
   * @param bool|true  $useTemporaryDomainCheck
709
   * @param bool|false $useDnsCheck (do not use, if you don't need it)
710
   *
711
   * @return bool
712
   */
713 86
  public static function isValid($email, $useExampleDomainCheck = false, $useTypoInDomainCheck = false, $useTemporaryDomainCheck = false, $useDnsCheck = false)
714
  {
715
    // make sure string length is limited to avoid DOS attacks
716 86
    if (!is_string($email) || strlen($email) >= 320 || strpos($email, ' ') !== false) {
717 17
      return false;
718 70
    } elseif (!preg_match('/^(.*<?)(.*)@(.*)(>?)$/', $email, $parts)) {
719 4
      return false;
720
    } else {
721
722 69
      $localFirst = $parts[1];
723 69
      $localSecond = $parts[2];
724 69
      $domain = $parts[3];
725
726 69
      if (function_exists('idn_to_ascii')) {
727
728 69
        $localFirst = idn_to_ascii($localFirst);
729 69
        $domain = idn_to_ascii($domain);
730
731 69
        if (!$localFirst) {
732 4
          $localFirst = $parts[1];
733 4
        }
734
735 69
      } else {
736
        $punycode = new Punycode();
737
        $localFirst = $punycode->encode($localFirst);
738
        $domain = $punycode->encode($domain);
739
      }
740
741 69
      $email = $localFirst . $localSecond . '@' . $domain . $parts[4];
742
743 69
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
744 52
        return false;
745
      } else {
746 19
        $valid = true;
747
      }
748
749 19
      if ($useExampleDomainCheck === true && self::isExampleDomain($domain) === true) {
750 2
        return false;
751
      }
752
753 19
      if ($useTypoInDomainCheck === true && self::isTypoInDomain($domain) === true) {
754 1
        return false;
755
      }
756
757 19
      if ($useTemporaryDomainCheck === true && self::isTemporaryDomain($domain) === true) {
758
        return false;
759
      }
760
761 19
      if ($useDnsCheck) {
762 1
        $dnsCheck = self::isDnsError($domain);
763
764 1
        if ($dnsCheck !== null) {
765 1
          return (boolean) $dnsCheck;
766
        }
767
      }
768
769
    }
770
771
772 18
    return $valid;
773
  }
774
775
  /**
776
   * check if the domain is a example domain
777
   *
778
   * @param string $domain
779
   *
780
   * @return bool
781
   */
782 2
  public static function isExampleDomain($domain)
783
  {
784 2
    if (in_array($domain, self::$domainsExample, true)) {
785 2
      return true;
786
    } else {
787 2
      return false;
788
    }
789
  }
790
791
  /**
792
   * check if the domain has a typo
793
   *
794
   * @param string $domain
795
   *
796
   * @return bool
797
   */
798 3
  public static function isTypoInDomain($domain)
799
  {
800 3
    if (in_array($domain, self::$domainsTypo, true)) {
801 2
      return true;
802
    } else {
803 3
      return false;
804
    }
805
  }
806
807
  /**
808
   * check if the domain is a temporary domain
809
   *
810
   * @param string $domain
811
   *
812
   * @return bool
813
   */
814 3
  public static function isTemporaryDomain($domain)
815
  {
816 3
    if (in_array($domain, self::$domainsTemporary, true)) {
817 1
      return true;
818
    } else {
819 3
      return false;
820
    }
821
  }
822
823
  /**
824
   * check if the domain has a typo
825
   *
826
   * @param string $domain
827
   *
828
   * @return bool|null will return null if we can't use the "checkdnsrr"-function
829
   */
830 2
  public static function isDnsError($domain)
831
  {
832 2
    if (function_exists('checkdnsrr')) {
833 2
      return !checkdnsrr($domain . '.', 'MX') || !checkdnsrr($domain, 'A');
834
    } else {
835
      return null;
836
    }
837
  }
838
}
839