Subversion Repositories javautils

Rev

Rev 4 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 daniel-mar 1
<?xml version="1.0" encoding="utf-8"?>
2
 
3
<!--
4
Source: http://isemail.googlecode.com/svn/trunk/tests/tests.xml
5
-->
6
 
7
<tests version="1.10">
8
        <test>
9
                <address>first.last@example.com</address>
10
                <valid>true</valid>
11
                <source>Dominic Sayers</source>
12
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
13
                <id>1</id>
14
        </test>
15
        <test>
16
                <address>1234567890123456789012345678901234567890123456789012345678901234@example.com</address>
17
                <valid>true</valid>
18
                <source>Dominic Sayers</source>
19
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
20
                <id>2</id>
21
        </test>
22
        <test>
23
                <address>first.last@sub.do,com</address>
24
                <valid>false</valid>
25
                <comment>Mistyped comma instead of dot (replaces old #3 which was the same as #57)</comment>
26
                <source>Rob &lt;bob@bob.com&gt;</source>
27
                <id>3</id>
28
        </test>
29
        <test>
30
                <address>"first\"last"@example.com</address>
31
                <valid>true</valid>
32
                <source>Dominic Sayers</source>
33
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
34
                <id>4</id>
35
        </test>
36
        <test>
37
                <address>first\@last@example.com</address>
38
                <valid>false</valid>
39
                <comment>Escaping can only happen within a quoted string</comment>
40
                <source>Dominic Sayers</source>
41
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
42
                <id>5</id>
43
        </test>
44
        <test>
45
                <address>"first@last"@example.com</address>
46
                <valid>true</valid>
47
                <source>Dominic Sayers</source>
48
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
49
                <id>6</id>
50
        </test>
51
        <test>
52
                <address>"first\\last"@example.com</address>
53
                <valid>true</valid>
54
                <source>Dominic Sayers</source>
55
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
56
                <id>7</id>
57
        </test>
58
        <test>
59
                <address>x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x2</address>
60
                <valid>true</valid>
61
                <comment>Total length reduced to 254 characters so it's still valid</comment>
62
                <source>Dominic Sayers</source>
63
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
64
                <id>8</id>
65
        </test>
66
        <test>
67
                <address>1234567890123456789012345678901234567890123456789012345678@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.123456789012345678901234567890123456789012345678901234567890123.example.com</address>
68
                <valid>true</valid>
69
                <comment>Total length reduced to 254 characters so it's still valid</comment>
70
                <source>RFC 3696 erratum 1690</source>
71
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=1690</sourcelink>
72
                <id>9</id>
73
        </test>
74
        <test>
75
                <address>first.last@[12.34.56.78]</address>
76
                <valid>true</valid>
77
                <source>RFC 3696 erratum 1690</source>
78
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=1690</sourcelink>
79
                <id>10</id>
80
        </test>
81
        <test>
82
                <address>first.last@[IPv6:::12.34.56.78]</address>
83
                <valid>true</valid>
84
                <source>Dominic Sayers</source>
85
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
86
                <id>11</id>
87
        </test>
88
        <test>
89
                <address>first.last@[IPv6:1111:2222:3333::4444:12.34.56.78]</address>
90
                <valid>true</valid>
91
                <source>Dominic Sayers</source>
92
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
93
                <id>12</id>
94
        </test>
95
        <test>
96
                <address>first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78]</address>
97
                <valid>true</valid>
98
                <source>Dominic Sayers</source>
99
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
100
                <id>13</id>
101
        </test>
102
        <test>
103
                <address>first.last@[IPv6:::1111:2222:3333:4444:5555:6666]</address>
104
                <valid>true</valid>
105
                <source>Dominic Sayers</source>
106
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
107
                <id>14</id>
108
        </test>
109
        <test>
110
                <address>first.last@[IPv6:1111:2222:3333::4444:5555:6666]</address>
111
                <valid>true</valid>
112
                <source>Dominic Sayers</source>
113
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
114
                <id>15</id>
115
        </test>
116
        <test>
117
                <address>first.last@[IPv6:1111:2222:3333:4444:5555:6666::]</address>
118
                <valid>true</valid>
119
                <source>Dominic Sayers</source>
120
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
121
                <id>16</id>
122
        </test>
123
        <test>
124
                <address>first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888]</address>
125
                <valid>true</valid>
126
                <source>Dominic Sayers</source>
127
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
128
                <id>17</id>
129
        </test>
130
        <test>
131
                <address>first.last@x23456789012345678901234567890123456789012345678901234567890123.example.com</address>
132
                <valid>true</valid>
133
                <source>Dominic Sayers</source>
134
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
135
                <id>18</id>
136
        </test>
137
        <test>
138
                <address>first.last@1xample.com</address>
139
                <valid>true</valid>
140
                <source>Dominic Sayers</source>
141
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
142
                <id>19</id>
143
        </test>
144
        <test>
145
                <address>first.last@123.example.com</address>
146
                <valid>true</valid>
147
                <source>Dominic Sayers</source>
148
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
149
                <id>20</id>
150
        </test>
151
        <test>
152
                <address>123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12.example.com</address>
153
                <valid>false</valid>
154
                <comment>Entire address is longer than 254 characters</comment>
155
                <source>RFC 3696 erratum 1690</source>
156
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=1690</sourcelink>
157
                <id>21</id>
158
        </test>
159
        <test>
160
                <address>first.last</address>
161
                <valid>false</valid>
162
                <comment>No @</comment>
163
                <source>Dominic Sayers</source>
164
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
165
                <id>22</id>
166
        </test>
167
        <test>
168
                <address>12345678901234567890123456789012345678901234567890123456789012345@example.com</address>
169
                <valid>false</valid>
170
                <comment>Local part more than 64 characters</comment>
171
                <source>Dominic Sayers</source>
172
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
173
                <id>23</id>
174
        </test>
175
        <test>
176
                <address>.first.last@example.com</address>
177
                <valid>false</valid>
178
                <comment>Local part starts with a dot</comment>
179
                <source>Dominic Sayers</source>
180
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
181
                <id>24</id>
182
        </test>
183
        <test>
184
                <address>first.last.@example.com</address>
185
                <valid>false</valid>
186
                <comment>Local part ends with a dot</comment>
187
                <source>Dominic Sayers</source>
188
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
189
                <id>25</id>
190
        </test>
191
        <test>
192
                <address>first..last@example.com</address>
193
                <valid>false</valid>
194
                <comment>Local part has consecutive dots</comment>
195
                <source>Dominic Sayers</source>
196
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
197
                <id>26</id>
198
        </test>
199
        <test>
200
                <address>"first"last"@example.com</address>
201
                <valid>false</valid>
202
                <comment>Local part contains unescaped excluded characters</comment>
203
                <source>Dominic Sayers</source>
204
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
205
                <id>27</id>
206
        </test>
207
        <test>
208
                <address>"first\last"@example.com</address>
209
                <valid>true</valid>
210
                <comment>Any character can be escaped in a quoted string</comment>
211
                <source>Dominic Sayers</source>
212
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
213
                <id>28</id>
214
        </test>
215
        <test>
216
                <address>"""@example.com</address>
217
                <valid>false</valid>
218
                <comment>Local part contains unescaped excluded characters</comment>
219
                <source>Dominic Sayers</source>
220
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
221
                <id>29</id>
222
        </test>
223
        <test>
224
                <address>"\"@example.com</address>
225
                <valid>false</valid>
226
                <comment>Local part cannot end with a backslash</comment>
227
                <source>Dominic Sayers</source>
228
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
229
                <id>30</id>
230
        </test>
231
        <test>
232
                <address>""@example.com</address>
233
                <valid>false</valid>
234
                <comment>Local part is effectively empty</comment>
235
                <source>Dominic Sayers</source>
236
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
237
                <id>31</id>
238
        </test>
239
        <test>
240
                <address>first\\@last@example.com</address>
241
                <valid>false</valid>
242
                <comment>Local part contains unescaped excluded characters</comment>
243
                <source>Dominic Sayers</source>
244
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
245
                <id>32</id>
246
        </test>
247
        <test>
248
                <address>first.last@</address>
249
                <valid>false</valid>
250
                <comment>No domain</comment>
251
                <source>Dominic Sayers</source>
252
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
253
                <id>33</id>
254
        </test>
255
        <test>
256
                <address>x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456</address>
257
                <valid>false</valid>
258
                <comment>Domain exceeds 255 chars</comment>
259
                <source>Dominic Sayers</source>
260
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
261
                <id>34</id>
262
        </test>
263
        <test>
264
                <address>first.last@[.12.34.56.78]</address>
265
                <valid>false</valid>
266
                <comment>Only char that can precede IPv4 address is ':'</comment>
267
                <source>Dominic Sayers</source>
268
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
269
                <id>35</id>
270
        </test>
271
        <test>
272
                <address>first.last@[12.34.56.789]</address>
273
                <valid>false</valid>
274
                <comment>Can't be interpreted as IPv4 so IPv6 tag is missing</comment>
275
                <source>Dominic Sayers</source>
276
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
277
                <id>36</id>
278
        </test>
279
        <test>
280
                <address>first.last@[::12.34.56.78]</address>
281
                <valid>false</valid>
282
                <comment>IPv6 tag is missing</comment>
283
                <source>Dominic Sayers</source>
284
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
285
                <id>37</id>
286
        </test>
287
        <test>
288
                <address>first.last@[IPv5:::12.34.56.78]</address>
289
                <valid>false</valid>
290
                <comment>IPv6 tag is wrong</comment>
291
                <source>Dominic Sayers</source>
292
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
293
                <id>38</id>
294
        </test>
295
        <test>
296
                <address>first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78]</address>
297
                <valid>false</valid>
298
                <comment>Too many IPv6 groups (4 max)</comment>
299
                <source>Dominic Sayers</source>
300
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
301
                <id>39</id>
302
        </test>
303
        <test>
304
                <address>first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78]</address>
305
                <valid>false</valid>
306
                <comment>Not enough IPv6 groups</comment>
307
                <source>Dominic Sayers</source>
308
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
309
                <id>40</id>
310
        </test>
311
        <test>
312
                <address>first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78]</address>
313
                <valid>false</valid>
314
                <comment>Too many IPv6 groups (6 max)</comment>
315
                <source>Dominic Sayers</source>
316
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
317
                <id>41</id>
318
        </test>
319
        <test>
320
                <address>first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777]</address>
321
                <valid>false</valid>
322
                <comment>Not enough IPv6 groups</comment>
323
                <source>Dominic Sayers</source>
324
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
325
                <id>42</id>
326
        </test>
327
        <test>
328
                <address>first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999]</address>
329
                <valid>false</valid>
330
                <comment>Too many IPv6 groups (8 max)</comment>
331
                <source>Dominic Sayers</source>
332
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
333
                <id>43</id>
334
        </test>
335
        <test>
336
                <address>first.last@[IPv6:1111:2222::3333::4444:5555:6666]</address>
337
                <valid>false</valid>
338
                <comment>Too many '::' (can be none or one)</comment>
339
                <source>Dominic Sayers</source>
340
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
341
                <id>44</id>
342
        </test>
343
        <test>
344
                <address>first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777]</address>
345
                <valid>false</valid>
346
                <comment>Too many IPv6 groups (6 max)</comment>
347
                <source>Dominic Sayers</source>
348
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
349
                <id>45</id>
350
        </test>
351
        <test>
352
                <address>first.last@[IPv6:1111:2222:333x::4444:5555]</address>
353
                <valid>false</valid>
354
                <comment>x is not valid in an IPv6 address</comment>
355
                <source>Dominic Sayers</source>
356
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
357
                <id>46</id>
358
        </test>
359
        <test>
360
                <address>first.last@[IPv6:1111:2222:33333::4444:5555]</address>
361
                <valid>false</valid>
362
                <comment>33333 is not a valid group in an IPv6 address</comment>
363
                <source>Dominic Sayers</source>
364
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
365
                <id>47</id>
366
        </test>
367
        <test>
368
                <address>first.last@example.123</address>
369
                <valid>false</valid>
370
                <comment>TLD can't be all digits</comment>
371
                <source>Dominic Sayers</source>
372
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
373
                <id>48</id>
374
        </test>
375
        <test>
376
                <address>first.last@com</address>
377
                <valid>false</valid>
378
                <comment>Mail host must be second- or lower level</comment>
379
                <source>Dominic Sayers</source>
380
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
381
                <id>49</id>
382
        </test>
383
        <test>
384
                <address>first.last@-xample.com</address>
385
                <valid>false</valid>
386
                <comment>Label can't begin with a hyphen</comment>
387
                <source>Dominic Sayers</source>
388
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
389
                <id>50</id>
390
        </test>
391
        <test>
392
                <address>first.last@exampl-.com</address>
393
                <valid>false</valid>
394
                <comment>Label can't end with a hyphen</comment>
395
                <source>Dominic Sayers</source>
396
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
397
                <id>51</id>
398
        </test>
399
        <test>
400
                <address>first.last@x234567890123456789012345678901234567890123456789012345678901234.example.com</address>
401
                <valid>false</valid>
402
                <comment>Label can't be longer than 63 octets</comment>
403
                <source>Dominic Sayers</source>
404
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
405
                <id>52</id>
406
        </test>
407
        <test>
408
                <address>"Abc\@def"@example.com</address>
409
                <valid>true</valid>
410
                <source>RFC 3696 (February 2004)</source>
411
                <sourcelink>http://tools.ietf.org/html/rfc3696#section-3</sourcelink>
412
                <id>53</id>
413
        </test>
414
        <test>
415
                <address>"Fred\ Bloggs"@example.com</address>
416
                <valid>true</valid>
417
                <source>RFC 3696 (as amended by erratum 2005-07-09)</source>
418
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=246</sourcelink>
419
                <id>54</id>
420
        </test>
421
        <test>
422
                <address>"Joe.\\Blow"@example.com</address>
423
                <valid>true</valid>
424
                <source>RFC 3696 (as amended by erratum 2005-07-09)</source>
425
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=246</sourcelink>
426
                <id>55</id>
427
        </test>
428
        <test>
429
                <address>"Abc@def"@example.com</address>
430
                <valid>true</valid>
431
                <source>RFC 3696 (as amended by erratum 2005-07-09)</source>
432
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=246</sourcelink>
433
                <id>56</id>
434
        </test>
435
        <test>
436
                <address>"Fred Bloggs"@example.com</address>
437
                <valid>true</valid>
438
                <source>RFC 3696 (February 2004)</source>
439
                <sourcelink>http://tools.ietf.org/html/rfc3696#section-3</sourcelink>
440
                <id>57</id>
441
        </test>
442
        <test>
443
                <address>user+mailbox@example.com</address>
444
                <valid>true</valid>
445
                <source>RFC 3696 (February 2004)</source>
446
                <sourcelink>http://tools.ietf.org/html/rfc3696#section-3</sourcelink>
447
                <id>58</id>
448
        </test>
449
        <test>
450
                <address>customer/department=shipping@example.com</address>
451
                <valid>true</valid>
452
                <source>RFC 3696 (February 2004)</source>
453
                <sourcelink>http://tools.ietf.org/html/rfc3696#section-3</sourcelink>
454
                <id>59</id>
455
        </test>
456
        <test>
457
                <address>$A12345@example.com</address>
458
                <valid>true</valid>
459
                <source>RFC 3696 (February 2004)</source>
460
                <sourcelink>http://tools.ietf.org/html/rfc3696#section-3</sourcelink>
461
                <id>60</id>
462
        </test>
463
        <test>
464
                <address>!def!xyz%abc@example.com</address>
465
                <valid>true</valid>
466
                <source>RFC 3696 (February 2004)</source>
467
                <sourcelink>http://tools.ietf.org/html/rfc3696#section-3</sourcelink>
468
                <id>61</id>
469
        </test>
470
        <test>
471
                <address>_somename@example.com</address>
472
                <valid>true</valid>
473
                <source>RFC 3696 (February 2004)</source>
474
                <sourcelink>http://tools.ietf.org/html/rfc3696#section-3</sourcelink>
475
                <id>62</id>
476
        </test>
477
        <test>
478
                <address>dclo@us.ibm.com</address>
479
                <valid>true</valid>
480
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
481
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
482
                <id>63</id>
483
        </test>
484
        <test>
485
                <address>abc\@def@example.com</address>
486
                <valid>false</valid>
487
                <comment>This example from RFC 3696 was corrected in an erratum</comment>
488
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
489
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
490
                <id>64</id>
491
        </test>
492
        <test>
493
                <address>abc\\@example.com</address>
494
                <valid>false</valid>
495
                <comment>This example from RFC 3696 was corrected in an erratum</comment>
496
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
497
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
498
                <id>65</id>
499
        </test>
500
        <test>
501
                <address>peter.piper@example.com</address>
502
                <valid>true</valid>
503
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
504
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
505
                <id>66</id>
506
        </test>
507
        <test>
508
                <address>Doug\ \"Ace\"\ Lovell@example.com</address>
509
                <valid>false</valid>
510
                <comment>Escaping can only happen in a quoted string</comment>
511
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
512
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
513
                <id>67</id>
514
        </test>
515
        <test>
516
                <address>"Doug \"Ace\" L."@example.com</address>
517
                <valid>true</valid>
518
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
519
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
520
                <id>68</id>
521
        </test>
522
        <test>
523
                <address>abc@def@example.com</address>
524
                <valid>false</valid>
525
                <comment>Doug Lovell says this should fail</comment>
526
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
527
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
528
                <id>69</id>
529
        </test>
530
        <test>
531
                <address>abc\\@def@example.com</address>
532
                <valid>false</valid>
533
                <comment>Doug Lovell says this should fail</comment>
534
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
535
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
536
                <id>70</id>
537
        </test>
538
        <test>
539
                <address>abc\@example.com</address>
540
                <valid>false</valid>
541
                <comment>Doug Lovell says this should fail</comment>
542
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
543
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
544
                <id>71</id>
545
        </test>
546
        <test>
547
                <address>@example.com</address>
548
                <valid>false</valid>
549
                <comment>No local part</comment>
550
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
551
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
552
                <id>72</id>
553
        </test>
554
        <test>
555
                <address>doug@</address>
556
                <valid>false</valid>
557
                <comment>Doug Lovell says this should fail</comment>
558
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
559
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
560
                <id>73</id>
561
        </test>
562
        <test>
563
                <address>"qu@example.com</address>
564
                <valid>false</valid>
565
                <comment>Doug Lovell says this should fail</comment>
566
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
567
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
568
                <id>74</id>
569
        </test>
570
        <test>
571
                <address>ote"@example.com</address>
572
                <valid>false</valid>
573
                <comment>Doug Lovell says this should fail</comment>
574
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
575
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
576
                <id>75</id>
577
        </test>
578
        <test>
579
                <address>.dot@example.com</address>
580
                <valid>false</valid>
581
                <comment>Doug Lovell says this should fail</comment>
582
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
583
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
584
                <id>76</id>
585
        </test>
586
        <test>
587
                <address>dot.@example.com</address>
588
                <valid>false</valid>
589
                <comment>Doug Lovell says this should fail</comment>
590
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
591
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
592
                <id>77</id>
593
        </test>
594
        <test>
595
                <address>two..dot@example.com</address>
596
                <valid>false</valid>
597
                <comment>Doug Lovell says this should fail</comment>
598
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
599
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
600
                <id>78</id>
601
        </test>
602
        <test>
603
                <address>"Doug "Ace" L."@example.com</address>
604
                <valid>false</valid>
605
                <comment>Doug Lovell says this should fail</comment>
606
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
607
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
608
                <id>79</id>
609
        </test>
610
        <test>
611
                <address>Doug\ \"Ace\"\ L\.@example.com</address>
612
                <valid>false</valid>
613
                <comment>Doug Lovell says this should fail</comment>
614
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
615
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
616
                <id>80</id>
617
        </test>
618
        <test>
619
                <address>hello world@example.com</address>
620
                <valid>false</valid>
621
                <comment>Doug Lovell says this should fail</comment>
622
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
623
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
624
                <id>81</id>
625
        </test>
626
        <test>
627
                <address>gatsby@f.sc.ot.t.f.i.tzg.era.l.d.</address>
628
                <valid>false</valid>
629
                <comment>Doug Lovell says this should fail</comment>
630
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
631
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
632
                <id>82</id>
633
        </test>
634
        <test>
635
                <valid>true</valid>
636
                <address>test@example.com</address>
637
                <source>Dave Child</source>
638
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
639
                <id>83</id>
640
        </test>
641
        <test>
642
                <valid>true</valid>
643
                <address>TEST@example.com</address>
644
                <source>Dave Child</source>
645
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
646
                <id>84</id>
647
        </test>
648
        <test>
649
                <valid>true</valid>
650
                <address>1234567890@example.com</address>
651
                <source>Dave Child</source>
652
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
653
                <id>85</id>
654
        </test>
655
        <test>
656
                <valid>true</valid>
657
                <address>test+test@example.com</address>
658
                <source>Dave Child</source>
659
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
660
                <id>86</id>
661
        </test>
662
        <test>
663
                <valid>true</valid>
664
                <address>test-test@example.com</address>
665
                <source>Dave Child</source>
666
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
667
                <id>87</id>
668
        </test>
669
        <test>
670
                <valid>true</valid>
671
                <address>t*est@example.com</address>
672
                <source>Dave Child</source>
673
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
674
                <id>88</id>
675
        </test>
676
        <test>
677
                <valid>true</valid>
678
                <address>+1~1+@example.com</address>
679
                <source>Dave Child</source>
680
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
681
                <id>89</id>
682
        </test>
683
        <test>
684
                <valid>true</valid>
685
                <address>{_test_}@example.com</address>
686
                <source>Dave Child</source>
687
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
688
                <id>90</id>
689
        </test>
690
        <test>
691
                <valid>true</valid>
692
                <address>"[[ test ]]"@example.com</address>
693
                <source>Dave Child</source>
694
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
695
                <id>91</id>
696
        </test>
697
        <test>
698
                <valid>true</valid>
699
                <address>test.test@example.com</address>
700
                <source>Dave Child</source>
701
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
702
                <id>92</id>
703
        </test>
704
        <test>
705
                <valid>true</valid>
706
                <address>"test.test"@example.com</address>
707
                <source>Dave Child</source>
708
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
709
                <id>93</id>
710
        </test>
711
        <test>
712
                <valid>true</valid>
713
                <address>test."test"@example.com</address>
714
                <comment>Obsolete form, but documented in RFC 5322</comment>
715
                <source>Dave Child</source>
716
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
717
                <id>94</id>
718
        </test>
719
        <test>
720
                <valid>true</valid>
721
                <address>"test@test"@example.com</address>
722
                <source>Dave Child</source>
723
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
724
                <id>95</id>
725
        </test>
726
        <test>
727
                <valid>true</valid>
728
                <address>test@123.123.123.x123</address>
729
                <source>Dave Child</source>
730
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
731
                <id>96</id>
732
        </test>
733
        <test>
734
                <valid>false</valid>
735
                <address>test@123.123.123.123</address>
736
                <comment>Top Level Domain won't be all-numeric (see RFC 3696 Section 2). I disagree with Dave Child on this one.</comment>
737
                <source>Dave Child</source>
738
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
739
                <id>97</id>
740
        </test>
741
        <test>
742
                <valid>true</valid>
743
                <address>test@[123.123.123.123]</address>
744
                <source>Dave Child</source>
745
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
746
                <id>98</id>
747
        </test>
748
        <test>
749
                <valid>true</valid>
750
                <address>test@example.example.com</address>
751
                <source>Dave Child</source>
752
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
753
                <id>99</id>
754
        </test>
755
        <test>
756
                <valid>true</valid>
757
                <address>test@example.example.example.com</address>
758
                <source>Dave Child</source>
759
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
760
                <id>100</id>
761
        </test>
762
        <test>
763
                <valid>false</valid>
764
                <address>test.example.com</address>
765
                <source>Dave Child</source>
766
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
767
                <id>101</id>
768
        </test>
769
        <test>
770
                <valid>false</valid>
771
                <address>test.@example.com</address>
772
                <source>Dave Child</source>
773
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
774
                <id>102</id>
775
        </test>
776
        <test>
777
                <valid>false</valid>
778
                <address>test..test@example.com</address>
779
                <source>Dave Child</source>
780
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
781
                <id>103</id>
782
        </test>
783
        <test>
784
                <valid>false</valid>
785
                <address>.test@example.com</address>
786
                <source>Dave Child</source>
787
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
788
                <id>104</id>
789
        </test>
790
        <test>
791
                <valid>false</valid>
792
                <address>test@test@example.com</address>
793
                <source>Dave Child</source>
794
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
795
                <id>105</id>
796
        </test>
797
        <test>
798
                <valid>false</valid>
799
                <address>test@@example.com</address>
800
                <source>Dave Child</source>
801
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
802
                <id>106</id>
803
        </test>
804
        <test>
805
                <valid>false</valid>
806
                <address>-- test --@example.com</address>
807
                <comment>No spaces allowed in local part</comment>
808
                <source>Dave Child</source>
809
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
810
                <id>107</id>
811
        </test>
812
        <test>
813
                <valid>false</valid>
814
                <address>[test]@example.com</address>
815
                <comment>Square brackets only allowed within quotes</comment>
816
                <source>Dave Child</source>
817
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
818
                <id>108</id>
819
        </test>
820
        <test>
821
                <valid>true</valid>
822
                <address>"test\test"@example.com</address>
823
                <comment>Any character can be escaped in a quoted string</comment>
824
                <source>Dave Child</source>
825
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
826
                <id>109</id>
827
        </test>
828
        <test>
829
                <valid>false</valid>
830
                <address>"test"test"@example.com</address>
831
                <comment>Quotes cannot be nested</comment>
832
                <source>Dave Child</source>
833
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
834
                <id>110</id>
835
        </test>
836
        <test>
837
                <valid>false</valid>
838
                <address>()[]\;:,&gt;&lt;@example.com</address>
839
                <comment>Disallowed Characters</comment>
840
                <source>Dave Child</source>
841
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
842
                <id>111</id>
843
        </test>
844
        <test>
845
                <valid>false</valid>
846
                <comment>Dave Child says so</comment>
847
                <address>test@.</address>
848
                <source>Dave Child</source>
849
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
850
                <id>112</id>
851
        </test>
852
        <test>
853
                <valid>false</valid>
854
                <comment>Dave Child says so</comment>
855
                <address>test@example.</address>
856
                <source>Dave Child</source>
857
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
858
                <id>113</id>
859
        </test>
860
        <test>
861
                <valid>false</valid>
862
                <comment>Dave Child says so</comment>
863
                <address>test@.org</address>
864
                <source>Dave Child</source>
865
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
866
                <id>114</id>
867
        </test>
868
        <test>
869
                <valid>false</valid>
870
                <address>test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com</address>
871
                <comment>255 characters is maximum length for domain. This is 256.</comment>
872
                <source>Dave Child</source>
873
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
874
                <id>115</id>
875
        </test>
876
        <test>
877
                <valid>false</valid>
878
                <comment>Dave Child says so</comment>
879
                <address>test@example</address>
880
                <source>Dave Child</source>
881
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
882
                <id>116</id>
883
        </test>
884
        <test>
885
                <valid>false</valid>
886
                <comment>Dave Child says so</comment>
887
                <address>test@[123.123.123.123</address>
888
                <source>Dave Child</source>
889
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
890
                <id>117</id>
891
        </test>
892
        <test>
893
                <valid>false</valid>
894
                <comment>Dave Child says so</comment>
895
                <address>test@123.123.123.123]</address>
896
                <source>Dave Child</source>
897
                <sourcelink>http://code.google.com/p/php-email-address-validation/</sourcelink>
898
                <id>118</id>
899
        </test>
900
        <test>
901
                <address>NotAnEmail</address>
902
                <valid>false</valid>
903
                <comment>Phil Haack says so</comment>
904
                <source>Phil Haack</source>
905
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
906
                <id>119</id>
907
        </test>
908
        <test>
909
                <address>@NotAnEmail</address>
910
                <valid>false</valid>
911
                <comment>Phil Haack says so</comment>
912
                <source>Phil Haack</source>
913
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
914
                <id>120</id>
915
        </test>
916
        <test>
917
                <address>"test\\blah"@example.com</address>
918
                <valid>true</valid>
919
                <source>Phil Haack</source>
920
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
921
                <id>121</id>
922
        </test>
923
        <test>
924
                <address>"test\blah"@example.com</address>
925
                <valid>true</valid>
926
                <comment>Any character can be escaped in a quoted string</comment>
927
                <source>Phil Haack</source>
928
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
929
                <id>122</id>
930
        </test>
931
        <test>
932
                <address>"test\&#13;blah"@example.com</address>
933
                <valid>true</valid>
934
                <comment>Quoted string specifically excludes carriage returns unless escaped</comment>
935
                <source>Phil Haack</source>
936
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
937
                <id>123</id>
938
        </test>
939
        <test>
940
                <address>"test&#13;blah"@example.com</address>
941
                <valid>false</valid>
942
                <comment>Quoted string specifically excludes carriage returns</comment>
943
                <source>Phil Haack</source>
944
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
945
                <id>124</id>
946
        </test>
947
        <test>
948
                <address>"test\"blah"@example.com</address>
949
                <valid>true</valid>
950
                <source>Phil Haack</source>
951
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
952
                <id>125</id>
953
        </test>
954
        <test>
955
                <address>"test"blah"@example.com</address>
956
                <valid>false</valid>
957
                <comment>Phil Haack says so</comment>
958
                <source>Phil Haack</source>
959
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
960
                <id>126</id>
961
        </test>
962
        <test>
963
                <address>customer/department@example.com</address>
964
                <valid>true</valid>
965
                <source>Phil Haack</source>
966
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
967
                <id>127</id>
968
        </test>
969
        <test>
970
                <address>_Yosemite.Sam@example.com</address>
971
                <valid>true</valid>
972
                <source>Phil Haack</source>
973
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
974
                <id>128</id>
975
        </test>
976
        <test>
977
                <address>~@example.com</address>
978
                <valid>true</valid>
979
                <source>Phil Haack</source>
980
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
981
                <id>129</id>
982
        </test>
983
        <test>
984
                <address>.wooly@example.com</address>
985
                <valid>false</valid>
986
                <comment>Phil Haack says so</comment>
987
                <source>Phil Haack</source>
988
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
989
                <id>130</id>
990
        </test>
991
        <test>
992
                <address>wo..oly@example.com</address>
993
                <valid>false</valid>
994
                <comment>Phil Haack says so</comment>
995
                <source>Phil Haack</source>
996
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
997
                <id>131</id>
998
        </test>
999
        <test>
1000
                <address>pootietang.@example.com</address>
1001
                <valid>false</valid>
1002
                <comment>Phil Haack says so</comment>
1003
                <source>Phil Haack</source>
1004
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1005
                <id>132</id>
1006
        </test>
1007
        <test>
1008
                <address>.@example.com</address>
1009
                <valid>false</valid>
1010
                <comment>Phil Haack says so</comment>
1011
                <source>Phil Haack</source>
1012
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1013
                <id>133</id>
1014
        </test>
1015
        <test>
1016
                <address>"Austin@Powers"@example.com</address>
1017
                <valid>true</valid>
1018
                <source>Phil Haack</source>
1019
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1020
                <id>134</id>
1021
        </test>
1022
        <test>
1023
                <address>Ima.Fool@example.com</address>
1024
                <valid>true</valid>
1025
                <source>Phil Haack</source>
1026
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1027
                <id>135</id>
1028
        </test>
1029
        <test>
1030
                <address>"Ima.Fool"@example.com</address>
1031
                <valid>true</valid>
1032
                <source>Phil Haack</source>
1033
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1034
                <id>136</id>
1035
        </test>
1036
        <test>
1037
                <address>"Ima Fool"@example.com</address>
1038
                <valid>true</valid>
1039
                <source>Phil Haack</source>
1040
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1041
                <id>137</id>
1042
        </test>
1043
        <test>
1044
                <address>Ima Fool@example.com</address>
1045
                <valid>false</valid>
1046
                <comment>Phil Haack says so</comment>
1047
                <source>Phil Haack</source>
1048
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1049
                <id>138</id>
1050
        </test>
1051
        <test>
1052
                <address>phil.h\@\@ck@haacked.com</address>
1053
                <valid>false</valid>
1054
                <comment>Escaping can only happen in a quoted string</comment>
1055
                <source>Phil Haack</source>
1056
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1057
                <id>139</id>
1058
        </test>
1059
        <test>
1060
                <address>"first"."last"@example.com</address>
1061
                <valid>true</valid>
1062
                <source>Dominic Sayers</source>
1063
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1064
                <id>140</id>
1065
        </test>
1066
        <test>
1067
                <address>"first".middle."last"@example.com</address>
1068
                <valid>true</valid>
1069
                <source>Dominic Sayers</source>
1070
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1071
                <id>141</id>
1072
        </test>
1073
        <test>
1074
                <address>"first\\"last"@example.com</address>
1075
                <valid>false</valid>
1076
                <comment>Contains an unescaped quote</comment>
1077
                <source>Dominic Sayers</source>
1078
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1079
                <id>142</id>
1080
        </test>
1081
        <test>
1082
                <address>"first".last@example.com</address>
1083
                <valid>true</valid>
1084
                <comment>obs-local-part form as described in RFC 5322</comment>
1085
                <source>Dominic Sayers</source>
1086
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1087
                <id>143</id>
1088
        </test>
1089
        <test>
1090
                <address>first."last"@example.com</address>
1091
                <valid>true</valid>
1092
                <comment>obs-local-part form as described in RFC 5322</comment>
1093
                <source>Dominic Sayers</source>
1094
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1095
                <id>144</id>
1096
        </test>
1097
        <test>
1098
                <address>"first"."middle"."last"@example.com</address>
1099
                <valid>true</valid>
1100
                <comment>obs-local-part form as described in RFC 5322</comment>
1101
                <source>Dominic Sayers</source>
1102
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1103
                <id>145</id>
1104
        </test>
1105
        <test>
1106
                <address>"first.middle"."last"@example.com</address>
1107
                <valid>true</valid>
1108
                <comment>obs-local-part form as described in RFC 5322</comment>
1109
                <source>Dominic Sayers</source>
1110
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1111
                <id>146</id>
1112
        </test>
1113
        <test>
1114
                <address>"first.middle.last"@example.com</address>
1115
                <valid>true</valid>
1116
                <comment>obs-local-part form as described in RFC 5322</comment>
1117
                <source>Dominic Sayers</source>
1118
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1119
                <id>147</id>
1120
        </test>
1121
        <test>
1122
                <address>"first..last"@example.com</address>
1123
                <valid>true</valid>
1124
                <comment>obs-local-part form as described in RFC 5322</comment>
1125
                <source>Dominic Sayers</source>
1126
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1127
                <id>148</id>
1128
        </test>
1129
        <test>
1130
                <address>foo@[\1.2.3.4]</address>
1131
                <valid>false</valid>
1132
                <comment>RFC 5321 specifies the syntax for address-literal and does not allow escaping</comment>
1133
                <source>Cal Henderson</source>
1134
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1135
                <id>149</id>
1136
        </test>
1137
        <test>
1138
                <address>"first\\\"last"@example.com</address>
1139
                <valid>true</valid>
1140
                <source>Dominic Sayers</source>
1141
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1142
                <id>150</id>
1143
        </test>
1144
        <test>
1145
                <address>first."mid\dle"."last"@example.com</address>
1146
                <valid>true</valid>
1147
                <comment>Backslash can escape anything but must escape something</comment>
1148
                <source>Dominic Sayers</source>
1149
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1150
                <id>151</id>
1151
        </test>
1152
        <test>
1153
                <address>Test.&#13;&#10; Folding.&#13;&#10; Whitespace@example.com</address>
1154
                <valid>true</valid>
1155
                <source>Dominic Sayers</source>
1156
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1157
                <id>152</id>
1158
        </test>
1159
        <test>
1160
                <address>first."".last@example.com</address>
1161
                <valid>false</valid>
1162
                <comment>Contains a zero-length element</comment>
1163
                <source>Dominic Sayers</source>
1164
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1165
                <id>153</id>
1166
        </test>
1167
        <test>
1168
                <address>first\last@example.com</address>
1169
                <valid>false</valid>
1170
                <comment>Unquoted string must be an atom</comment>
1171
                <source>Dominic Sayers</source>
1172
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1173
                <id>154</id>
1174
        </test>
1175
        <test>
1176
                <address>Abc\@def@example.com</address>
1177
                <valid>false</valid>
1178
                <comment>Was incorrectly given as a valid address in the original RFC 3696</comment>
1179
                <source>RFC 3696 erratum 246</source>
1180
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=246</sourcelink>
1181
                <id>155</id>
1182
        </test>
1183
        <test>
1184
                <address>Fred\ Bloggs@example.com</address>
1185
                <valid>false</valid>
1186
                <comment>Was incorrectly given as a valid address in the original RFC 3696</comment>
1187
                <source>RFC 3696 erratum 246</source>
1188
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=246</sourcelink>
1189
                <id>156</id>
1190
        </test>
1191
        <test>
1192
                <address>Joe.\\Blow@example.com</address>
1193
                <valid>false</valid>
1194
                <comment>Was incorrectly given as a valid address in the original RFC 3696</comment>
1195
                <source>RFC 3696 erratum 246</source>
1196
                <sourcelink>http://www.rfc-editor.org/errata_search.php?rfc=3696&amp;eid=246</sourcelink>
1197
                <id>157</id>
1198
        </test>
1199
        <test>
1200
                <address>first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89]</address>
1201
                <valid>false</valid>
1202
                <comment>IPv4 part contains an invalid octet</comment>
1203
                <source>Cal Henderson</source>
1204
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1205
                <id>158</id>
1206
        </test>
1207
        <test>
1208
                <address>"test\&#13;&#10; blah"@example.com</address>
1209
                <valid>false</valid>
1210
                <comment>Folding white space can't appear within a quoted pair</comment>
1211
                <source>Cal Henderson</source>
1212
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1213
                <id>159</id>
1214
        </test>
1215
        <test>
1216
                <address>"test&#13;&#10; blah"@example.com</address>
1217
                <valid>true</valid>
1218
                <comment>This is a valid quoted string with folding white space</comment>
1219
                <source>Phil Haack</source>
1220
                <sourcelink>http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx</sourcelink>
1221
                <id>160</id>
1222
        </test>
1223
        <test>
1224
                <address>{^c\@**Dog^}@cartoon.com</address>
1225
                <valid>false</valid>
1226
                <comment>This is a throwaway example from Doug Lovell's article. Actually it's not a valid address.</comment>
1227
                <source>Doug Lovell (LinuxJournal, June 2007)</source>
1228
                <sourcelink>http://www.linuxjournal.com/article/9585</sourcelink>
1229
                <id>161</id>
1230
        </test>
1231
        <test>
1232
                <address>(foo)cal(bar)@(baz)iamcal.com(quux)</address>
1233
                <valid>true</valid>
1234
                <comment>A valid address containing comments</comment>
1235
                <source>Cal Henderson</source>
1236
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1237
                <id>162</id>
1238
        </test>
1239
        <test>
1240
                <address>cal@iamcal(woo).(yay)com</address>
1241
                <valid>true</valid>
1242
                <comment>A valid address containing comments</comment>
1243
                <source>Cal Henderson</source>
1244
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1245
                <id>163</id>
1246
        </test>
1247
        <test>
1248
                <address>"foo"(yay)@(hoopla)[1.2.3.4]</address>
1249
                <valid>false</valid>
1250
                <comment>Address literal can't be commented (RFC 5321)</comment>
1251
                <source>Cal Henderson</source>
1252
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1253
                <id>164</id>
1254
        </test>
1255
        <test>
1256
                <address>cal(woo(yay)hoopla)@iamcal.com</address>
1257
                <valid>true</valid>
1258
                <comment>A valid address containing comments</comment>
1259
                <source>Cal Henderson</source>
1260
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1261
                <id>165</id>
1262
        </test>
1263
        <test>
1264
                <address>cal(foo\@bar)@iamcal.com</address>
1265
                <valid>true</valid>
1266
                <comment>A valid address containing comments</comment>
1267
                <source>Cal Henderson</source>
1268
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1269
                <id>166</id>
1270
        </test>
1271
        <test>
1272
                <address>cal(foo\)bar)@iamcal.com</address>
1273
                <valid>true</valid>
1274
                <comment>A valid address containing comments and an escaped parenthesis</comment>
1275
                <source>Cal Henderson</source>
1276
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1277
                <id>167</id>
1278
        </test>
1279
        <test>
1280
                <address>cal(foo(bar)@iamcal.com</address>
1281
                <valid>false</valid>
1282
                <comment>Unclosed parenthesis in comment</comment>
1283
                <source>Cal Henderson</source>
1284
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1285
                <id>168</id>
1286
        </test>
1287
        <test>
1288
                <address>cal(foo)bar)@iamcal.com</address>
1289
                <valid>false</valid>
1290
                <comment>Too many closing parentheses</comment>
1291
                <source>Cal Henderson</source>
1292
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1293
                <id>169</id>
1294
        </test>
1295
        <test>
1296
                <address>cal(foo\)@iamcal.com</address>
1297
                <valid>false</valid>
1298
                <comment>Backslash at end of comment has nothing to escape</comment>
1299
                <source>Cal Henderson</source>
1300
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1301
                <id>170</id>
1302
        </test>
1303
        <test>
1304
                <address>first().last@example.com</address>
1305
                <valid>true</valid>
1306
                <comment>A valid address containing an empty comment</comment>
1307
                <source>Dominic Sayers</source>
1308
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1309
                <id>171</id>
1310
        </test>
1311
        <test>
1312
                <address>first.(&#13;&#10; middle&#13;&#10; )last@example.com</address>
1313
                <valid>true</valid>
1314
                <comment>Comment with folding white space</comment>
1315
                <source>Dominic Sayers</source>
1316
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1317
                <id>172</id>
1318
        </test>
1319
        <test>
1320
                <address>first(12345678901234567890123456789012345678901234567890)last@(1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890)example.com</address>
1321
                <valid>false</valid>
1322
                <comment>Too long with comments, not too long without</comment>
1323
                <source>Dominic Sayers</source>
1324
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1325
                <id>173</id>
1326
        </test>
1327
        <test>
1328
                <address>first(Welcome to&#13;&#10; the ("wonderful" (!)) world&#13;&#10; of email)@example.com</address>
1329
                <valid>true</valid>
1330
                <comment>Silly example from my blog post</comment>
1331
                <source>Dominic Sayers</source>
1332
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1333
                <id>174</id>
1334
        </test>
1335
        <test>
1336
                <address>pete(his account)@silly.test(his host)</address>
1337
                <valid>true</valid>
1338
                <comment>Canonical example from RFC 5322</comment>
1339
                <source>RFC 5322</source>
1340
                <sourcelink>http://tools.ietf.org/html/rfc5322</sourcelink>
1341
                <id>175</id>
1342
        </test>
1343
        <test>
1344
                <address>c@(Chris's host.)public.example</address>
1345
                <valid>true</valid>
1346
                <comment>Canonical example from RFC 5322</comment>
1347
                <source>RFC 5322</source>
1348
                <sourcelink>http://tools.ietf.org/html/rfc5322</sourcelink>
1349
                <id>176</id>
1350
        </test>
1351
        <test>
1352
                <address>jdoe@machine(comment).  example</address>
1353
                <valid>true</valid>
1354
                <comment>Canonical example from RFC 5322</comment>
1355
                <source>RFC 5322</source>
1356
                <sourcelink>http://tools.ietf.org/html/rfc5322</sourcelink>
1357
                <id>177</id>
1358
        </test>
1359
        <test>
1360
                <address>1234   @   local(blah)  .machine .example</address>
1361
                <valid>true</valid>
1362
                <comment>Canonical example from RFC 5322</comment>
1363
                <source>RFC 5322</source>
1364
                <sourcelink>http://tools.ietf.org/html/rfc5322</sourcelink>
1365
                <id>178</id>
1366
        </test>
1367
        <test>
1368
                <address>first(middle)last@example.com</address>
1369
                <valid>false</valid>
1370
                <comment>Can't have a comment or white space except at an element boundary</comment>
1371
                <source>Dominic Sayers</source>
1372
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1373
                <id>179</id>
1374
        </test>
1375
        <test>
1376
                <address>first(abc.def).last@example.com</address>
1377
                <valid>true</valid>
1378
                <comment>Comment can contain a dot</comment>
1379
                <source>Dominic Sayers</source>
1380
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1381
                <id>180</id>
1382
        </test>
1383
        <test>
1384
                <address>first(a"bc.def).last@example.com</address>
1385
                <valid>true</valid>
1386
                <comment>Comment can contain double quote</comment>
1387
                <source>Dominic Sayers</source>
1388
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1389
                <id>181</id>
1390
        </test>
1391
        <test>
1392
                <address>first.(")middle.last(")@example.com</address>
1393
                <valid>true</valid>
1394
                <comment>Comment can contain a quote</comment>
1395
                <source>Dominic Sayers</source>
1396
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1397
                <id>182</id>
1398
        </test>
1399
        <test>
1400
                <address>first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno).(abc("def".ghi).mno)com(abc("def".ghi).mno)</address>
1401
                <valid>false</valid>
1402
                <comment>Can't have comments or white space except at an element boundary</comment>
1403
                <source>Dominic Sayers</source>
1404
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1405
                <id>183</id>
1406
        </test>
1407
        <test>
1408
                <address>first(abc\(def)@example.com</address>
1409
                <valid>true</valid>
1410
                <comment>Comment can contain quoted-pair</comment>
1411
                <source>Dominic Sayers</source>
1412
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1413
                <id>184</id>
1414
        </test>
1415
        <test>
1416
                <address>first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com</address>
1417
                <valid>true</valid>
1418
                <comment>Label is longer than 63 octets, but not with comment removed</comment>
1419
                <source>Cal Henderson</source>
1420
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1421
                <id>185</id>
1422
        </test>
1423
        <test>
1424
                <address>a(a(b(c)d(e(f))g)h(i)j)@example.com</address>
1425
                <valid>true</valid>
1426
                <source>Cal Henderson</source>
1427
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1428
                <id>186</id>
1429
        </test>
1430
        <test>
1431
                <address>a(a(b(c)d(e(f))g)(h(i)j)@example.com</address>
1432
                <valid>false</valid>
1433
                <comment>Braces are not properly matched</comment>
1434
                <source>Cal Henderson</source>
1435
                <sourcelink>http://code.iamcal.com/php/rfc822/</sourcelink>
1436
                <id>187</id>
1437
        </test>
1438
        <test>
1439
                <address>name.lastname@domain.com</address>
1440
                <valid>true</valid>
1441
                <source>Paul Gregg</source>
1442
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1443
                <id>188</id>
1444
        </test>
1445
        <test>
1446
                <address>.@</address>
1447
                <valid>false</valid>
1448
                <source>Paul Gregg</source>
1449
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1450
                <id>189</id>
1451
        </test>
1452
        <test>
1453
                <address>a@b</address>
1454
                <valid>false</valid>
1455
                <source>Paul Gregg</source>
1456
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1457
                <id>190</id>
1458
        </test>
1459
        <test>
1460
                <address>@bar.com</address>
1461
                <valid>false</valid>
1462
                <source>Paul Gregg</source>
1463
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1464
                <id>191</id>
1465
        </test>
1466
        <test>
1467
                <address>@@bar.com</address>
1468
                <valid>false</valid>
1469
                <source>Paul Gregg</source>
1470
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1471
                <id>192</id>
1472
        </test>
1473
        <test>
1474
                <address>a@bar.com</address>
1475
                <valid>true</valid>
1476
                <source>Paul Gregg</source>
1477
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1478
                <id>193</id>
1479
        </test>
1480
        <test>
1481
                <address>aaa.com</address>
1482
                <valid>false</valid>
1483
                <source>Paul Gregg</source>
1484
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1485
                <id>194</id>
1486
        </test>
1487
        <test>
1488
                <address>aaa@.com</address>
1489
                <valid>false</valid>
1490
                <source>Paul Gregg</source>
1491
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1492
                <id>195</id>
1493
        </test>
1494
        <test>
1495
                <address>aaa@.123</address>
1496
                <valid>false</valid>
1497
                <source>Paul Gregg</source>
1498
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1499
                <id>196</id>
1500
        </test>
1501
        <test>
1502
                <address>aaa@[123.123.123.123]</address>
1503
                <valid>true</valid>
1504
                <source>Paul Gregg</source>
1505
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1506
                <id>197</id>
1507
        </test>
1508
        <test>
1509
                <address>aaa@[123.123.123.123]a</address>
1510
                <valid>false</valid>
1511
                <comment>extra data outside ip</comment>
1512
                <source>Paul Gregg</source>
1513
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1514
                <id>198</id>
1515
        </test>
1516
        <test>
1517
                <address>aaa@[123.123.123.333]</address>
1518
                <valid>false</valid>
1519
                <comment>not a valid IP</comment>
1520
                <source>Paul Gregg</source>
1521
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1522
                <id>199</id>
1523
        </test>
1524
        <test>
1525
                <address>a@bar.com.</address>
1526
                <valid>false</valid>
1527
                <source>Paul Gregg</source>
1528
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1529
                <id>200</id>
1530
        </test>
1531
        <test>
1532
                <address>a@bar</address>
1533
                <valid>false</valid>
1534
                <source>Paul Gregg</source>
1535
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1536
                <id>201</id>
1537
        </test>
1538
        <test>
1539
                <address>a-b@bar.com</address>
1540
                <valid>true</valid>
1541
                <source>Paul Gregg</source>
1542
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1543
                <id>202</id>
1544
        </test>
1545
        <test>
1546
                <address>+@b.c</address>
1547
                <valid>true</valid>
1548
                <comment>TLDs can be any length</comment>
1549
                <source>Paul Gregg</source>
1550
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1551
                <id>203</id>
1552
        </test>
1553
        <test>
1554
                <address>+@b.com</address>
1555
                <valid>true</valid>
1556
                <source>Paul Gregg</source>
1557
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1558
                <id>204</id>
1559
        </test>
1560
        <test>
1561
                <address>a@-b.com</address>
1562
                <valid>false</valid>
1563
                <source>Paul Gregg</source>
1564
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1565
                <id>205</id>
1566
        </test>
1567
        <test>
1568
                <address>a@b-.com</address>
1569
                <valid>false</valid>
1570
                <source>Paul Gregg</source>
1571
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1572
                <id>206</id>
1573
        </test>
1574
        <test>
1575
                <address>-@..com</address>
1576
                <valid>false</valid>
1577
                <source>Paul Gregg</source>
1578
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1579
                <id>207</id>
1580
        </test>
1581
        <test>
1582
                <address>-@a..com</address>
1583
                <valid>false</valid>
1584
                <source>Paul Gregg</source>
1585
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1586
                <id>208</id>
1587
        </test>
1588
        <test>
1589
                <address>a@b.co-foo.uk</address>
1590
                <valid>true</valid>
1591
                <source>Paul Gregg</source>
1592
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1593
                <id>209</id>
1594
        </test>
1595
        <test>
1596
                <address>"hello my name is"@stutter.com</address>
1597
                <valid>true</valid>
1598
                <source>Paul Gregg</source>
1599
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1600
                <id>210</id>
1601
        </test>
1602
        <test>
1603
                <address>"Test \"Fail\" Ing"@example.com</address>
1604
                <valid>true</valid>
1605
                <source>Paul Gregg</source>
1606
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1607
                <id>211</id>
1608
        </test>
1609
        <test>
1610
                <address>valid@special.museum</address>
1611
                <valid>true</valid>
1612
                <source>Paul Gregg</source>
1613
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1614
                <id>212</id>
1615
        </test>
1616
        <test>
1617
                <address>invalid@special.museum-</address>
1618
                <valid>false</valid>
1619
                <source>Paul Gregg</source>
1620
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1621
                <id>213</id>
1622
        </test>
1623
        <test>
1624
                <address>shaitan@my-domain.thisisminekthx</address>
1625
                <valid>true</valid>
1626
                <comment>Disagree with Paul Gregg here</comment>
1627
                <source>Paul Gregg</source>
1628
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1629
                <id>214</id>
1630
        </test>
1631
        <test>
1632
                <address>test@...........com</address>
1633
                <valid>false</valid>
1634
                <comment>......</comment>
1635
                <source>Paul Gregg</source>
1636
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1637
                <id>215</id>
1638
        </test>
1639
        <test>
1640
                <address>foobar@192.168.0.1</address>
1641
                <valid>false</valid>
1642
                <comment>ip need to be []</comment>
1643
                <source>Paul Gregg</source>
1644
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1645
                <id>216</id>
1646
        </test>
1647
        <test>
1648
                <address>"Joe\\Blow"@example.com</address>
1649
                <valid>true</valid>
1650
                <source>Paul Gregg</source>
1651
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1652
                <id>217</id>
1653
        </test>
1654
        <test>
1655
                <address>Invalid \&#10; Folding \&#10; Whitespace@example.com</address>
1656
                <valid>false</valid>
1657
                <source>Paul Gregg</source>
1658
                <comment>This isn't FWS so Dominic Sayers says it's invalid</comment>
1659
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1660
                <id>218</id>
1661
        </test>
1662
        <test>
1663
                <address>HM2Kinsists@(that comments are allowed)this.is.ok</address>
1664
                <valid>true</valid>
1665
                <source>Paul Gregg</source>
1666
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1667
                <id>219</id>
1668
        </test>
1669
        <test>
1670
                <address>user%uucp!path@somehost.edu</address>
1671
                <valid>true</valid>
1672
                <source>Paul Gregg</source>
1673
                <sourcelink>http://pgregg.com/projects/php/code/showvalidemail.php</sourcelink>
1674
                <id>220</id>
1675
        </test>
1676
        <test>
1677
                <address>"first(last)"@example.com</address>
1678
                <valid>true</valid>
1679
                <source>Dominic Sayers</source>
1680
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1681
                <id>221</id>
1682
        </test>
1683
        <test>
1684
                <address> &#13;&#10; (&#13;&#10; x &#13;&#10; ) &#13;&#10; first&#13;&#10; ( &#13;&#10; x&#13;&#10; ) &#13;&#10; .&#13;&#10; ( &#13;&#10; x) &#13;&#10; last &#13;&#10; (  x &#13;&#10; ) &#13;&#10; @example.com</address>
1685
                <valid>true</valid>
1686
                <source>Dominic Sayers</source>
1687
                <sourcelink>http://www.dominicsayers.com/isemail</sourcelink>
1688
                <id>222</id>
1689
        </test>
1690
        <test>
1691
                <address>test. &#13;&#10; &#13;&#10; obs@syntax.com</address>
1692
                <valid>true</valid>
1693
                <comment>obs-fws allows multiple lines</comment>
1694
                <source>George Pollard</source>
1695
                <sourcelink>http://porg.es/blog/properly-validating-e-mail-addresses</sourcelink>
1696
                <id>223</id>
1697
        </test>
1698
        <test>
1699
                <address>test. &#13;&#10; &#13;&#10; obs@syntax.com</address>
1700
                <valid>true</valid>
1701
                <comment>obs-fws allows multiple lines (test 2: space before break)</comment>
1702
                <source>George Pollard</source>
1703
                <sourcelink>http://porg.es/blog/properly-validating-e-mail-addresses</sourcelink>
1704
                <id>224</id>
1705
        </test>
1706
        <test>
1707
                <address>test.&#13;&#10;&#13;&#10; obs@syntax.com</address>
1708
                <valid>false</valid>
1709
                <comment>obs-fws must have at least one WSP per line</comment>
1710
                <source>George Pollard</source>
1711
                <sourcelink>http://porg.es/blog/properly-validating-e-mail-addresses</sourcelink>
1712
                <id>225</id>
1713
        </test>
1714
        <test>
1715
                <address>"null \\0"@char.com</address>
1716
                <valid>true</valid>
1717
                <comment>can have escaped null character</comment>
1718
                <source>George Pollard</source>
1719
                <sourcelink>http://porg.es/blog/properly-validating-e-mail-addresses</sourcelink>
1720
                <id>226</id>
1721
        </test>
1722
        <test>
1723
                <address>"null \0"@char.com</address>
1724
                <valid>false</valid>
1725
                <comment>cannot have unescaped null character</comment>
1726
                <source>George Pollard</source>
1727
                <sourcelink>http://porg.es/blog/properly-validating-e-mail-addresses</sourcelink>
1728
                <id>227</id>
1729
        </test>
1730
        <test>
1731
                <address>null\\0@char.com</address>
1732
                <valid>false</valid>
1733
                <comment>escaped null must be in quoted string</comment>
1734
                <source>George Pollard</source>
1735
                <sourcelink>http://porg.es/blog/properly-validating-e-mail-addresses</sourcelink>
1736
                <id>228</id>
1737
        </test>
1738
        <test>
1739
                <address>cdburgess+!#$%&amp;'*-/=?+_{}|~test@gmail.com</address>
1740
                <valid>true</valid>
1741
                <comment>Example given in comments</comment>
1742
                <source>http://www.dominicsayers.com/isemail/#comment-30024957</source>
1743
                <sourcelink>cdburgess</sourcelink>
1744
                <id>229</id>
1745
        </test>
1746
</tests>