Completed
Push — master ( 9320c1...71997f )
by Lars
02:52
created

EmailCheck::isValid()   C

Complexity

Conditions 14
Paths 9

Size

Total Lines 50
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 25
CRAP Score 14.0111

Importance

Changes 5
Bugs 0 Features 1
Metric Value
c 5
b 0
f 1
dl 0
loc 50
ccs 25
cts 26
cp 0.9615
rs 5.3716
cc 14
eloc 28
nc 9
nop 5
crap 14.0111

How to fix   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 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
      $punycode = new Punycode();
727 69
      $localFirst = $punycode->encode($localFirst);
728 69
      $domain = $punycode->encode($domain);
729
730 69
      $email = $localFirst . $localSecond . '@' . $domain . $parts[4];
731
732 69
      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
733 52
        return false;
734
      } else {
735 19
        $valid = true;
736
      }
737
738 19
      if ($useExampleDomainCheck === true && self::isExampleDomain($domain) === true) {
739 2
        return false;
740
      }
741
742 19
      if ($useTypoInDomainCheck === true && self::isTypoInDomain($domain) === true) {
743 1
        return false;
744
      }
745
746 19
      if ($useTemporaryDomainCheck === true && self::isTemporaryDomain($domain) === true) {
747
        return false;
748
      }
749
750 19
      if ($useDnsCheck) {
751 1
        $dnsCheck = self::isDnsError($domain);
752
753 1
        if ($dnsCheck !== null) {
754 1
          return (boolean) $dnsCheck;
755
        }
756
      }
757
758
    }
759
760
761 18
    return $valid;
762
  }
763
764
  /**
765
   * check if the domain is a example domain
766
   *
767
   * @param string $domain
768
   *
769
   * @return bool
770
   */
771 2
  public static function isExampleDomain($domain)
772
  {
773 2
    if (in_array($domain, self::$domainsExample, true)) {
774 2
      return true;
775
    } else {
776 2
      return false;
777
    }
778
  }
779
780
  /**
781
   * check if the domain has a typo
782
   *
783
   * @param string $domain
784
   *
785
   * @return bool
786
   */
787 3
  public static function isTypoInDomain($domain)
788
  {
789 3
    if (in_array($domain, self::$domainsTypo, true)) {
790 2
      return true;
791
    } else {
792 3
      return false;
793
    }
794
  }
795
796
  /**
797
   * check if the domain is a temporary domain
798
   *
799
   * @param string $domain
800
   *
801
   * @return bool
802
   */
803 3
  public static function isTemporaryDomain($domain)
804
  {
805 3
    if (in_array($domain, self::$domainsTemporary, true)) {
806 1
      return true;
807
    } else {
808 3
      return false;
809
    }
810
  }
811
812
  /**
813
   * check if the domain has a typo
814
   *
815
   * @param string $domain
816
   *
817
   * @return bool|null will return null if we can't use the "checkdnsrr"-function
818
   */
819 2
  public static function isDnsError($domain)
820
  {
821 2
    if (function_exists('checkdnsrr')) {
822 2
      return !checkdnsrr($domain . '.', 'MX') || !checkdnsrr($domain, 'A');
823
    } else {
824
      return null;
825
    }
826
  }
827
}
828