Subversion Repositories javautils

Rev

Go to most recent revision | View as "text/xml" | Blame | Last modification | View Log | RSS feed

  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>
  1747.