Subversion Repositories javautils

Rev

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

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