Completed
Push — master ( 1c83e8...2696d1 )
by Lars
35:14
created

EmailCheck::isValid()   C

Complexity

Conditions 16
Paths 20

Size

Total Lines 57
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 25
CRAP Score 16.6713

Importance

Changes 7
Bugs 0 Features 1
Metric Value
c 7
b 0
f 1
dl 0
loc 57
ccs 25
cts 29
cp 0.8621
rs 6.5273
cc 16
eloc 32
nc 20
nop 5
crap 16.6713

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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 135
  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 135
    if (!is_string($email) || strlen($email) >= 320 || strpos($email, ' ') !== false) {
717 25
      return false;
718 111
    } elseif (!preg_match('/^(.*<?)(.*)@(.*)(>?)$/', $email, $parts)) {
719 8
      return false;
720
    } else {
721
722 106
      $localFirst = $parts[1];
723 106
      $localSecond = $parts[2];
724 106
      $domain = $parts[3];
725
726 106
      if (function_exists('idn_to_ascii')) {
727
728 106
        $localFirst = idn_to_ascii($localFirst);
729 106
        $domain = idn_to_ascii($domain);
730
731 106
        if (!$localFirst) {
732 106
          $localFirst = $parts[1];
733
        }
734
735
      } else {
736
        $punycode = new Punycode();
737
        $localFirst = $punycode->encode($localFirst);
738
        $domain = $punycode->encode($domain);
739
      }
740
741 106
      $email = $localFirst . $localSecond . '@' . $domain . $parts[4];
742
743 106
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
744 74
        return false;
745
      } else {
746 34
        $valid = true;
747
      }
748
749 34
      if ($useExampleDomainCheck === true && self::isExampleDomain($domain) === true) {
750 2
        return false;
751
      }
752
753 34
      if ($useTypoInDomainCheck === true && self::isTypoInDomain($domain) === true) {
754 1
        return false;
755
      }
756
757 34
      if ($useTemporaryDomainCheck === true && self::isTemporaryDomain($domain) === true) {
758
        return false;
759
      }
760
761 34
      if ($useDnsCheck === true && self::isDnsError($domain) === true) {
762 3
        return false;
763
      }
764
765
    }
766
767
768 31
    return $valid;
769
  }
770
771
  /**
772
   * check if the domain is a example domain
773
   *
774
   * @param string $domain
775
   *
776
   * @return bool
777
   */
778 2
  public static function isExampleDomain($domain)
779
  {
780 2
    if (in_array($domain, self::$domainsExample, true)) {
781 2
      return true;
782
    } else {
783 2
      return false;
784
    }
785
  }
786
787
  /**
788
   * check if the domain has a typo
789
   *
790
   * @param string $domain
791
   *
792
   * @return bool
793
   */
794 3
  public static function isTypoInDomain($domain)
795
  {
796 3
    if (in_array($domain, self::$domainsTypo, true)) {
797 2
      return true;
798
    } else {
799 3
      return false;
800
    }
801
  }
802
803
  /**
804
   * check if the domain is a temporary domain
805
   *
806
   * @param string $domain
807
   *
808
   * @return bool
809
   */
810 3
  public static function isTemporaryDomain($domain)
811
  {
812 3
    if (in_array($domain, self::$domainsTemporary, true)) {
813 1
      return true;
814
    } else {
815 3
      return false;
816
    }
817
  }
818
819
  /**
820
   * check if the domain has a typo
821
   *
822
   * @param string $domain
823
   *
824
   * @return bool|null will return null if we can't use the "checkdnsrr"-function
825
   */
826 4
  public static function isDnsError($domain)
827
  {
828 4
    if (function_exists('checkdnsrr')) {
829 4
      return !checkdnsrr($domain . '.', 'MX') || !checkdnsrr($domain, 'A');
830
    } else {
831
      throw new \Exception(' Can\'t call checkdnsrr');
832
    }
833
  }
834
}
835