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