[
    {
        "email": "testing@us.example.com",
        "valid": true,
        "reason": "Plain address"
    },
    {
        "email": "peter.piper@example.com",
        "valid": true,
        "reason": "Plain address"
    },
    {
        "email": "_somename@example.com",
        "valid": true,
        "reason": "Plain address"
    },
    {
        "email": "user+mailbox@example.com",
        "valid": true,
        "reason": "Plain address"
    },
    {
        "email": "someone@3com.com",
        "valid": true,
        "reason": "RFC 1123 lets a label start with a digit; RFC 1035 did not"
    },
    {
        "email": "testing@somewhere",
        "valid": true,
        "reason": "While \"somewhere\" is not a valid TLD yet, the email address violates no rules"
    },
    {
        "email": "abcdefghijklmnopqrstuvwxyz@abcdefghijklmnopqrstuvwxyz",
        "valid": true,
        "reason": "Plain address"
    },
    {
        "email": "customer/department=shipping@example.com",
        "valid": true,
        "reason": "Uncommon characters"
    },
    {
        "email": "!def!xyz.c%abc+@example.com",
        "valid": true,
        "reason": "Uncommon characters"
    },
    {
        "email": "good@host-name.com",
        "valid": true,
        "reason": "Hosts can have hyphens"
    },
    {
        "email": "1234567890.0987654321@EXAMPLE.WHATEVER.ABC.123.CAT",
        "valid": true,
        "reason": "Some check for letters in the local part"
    },
    {
        "email": "relay.mil%john.smith@EXAMPLE-WHATEVER.ARPA",
        "valid": true,
        "reason": "Old-school relays"
    },
    {
        "email": "test@localhost.com",
        "valid": true,
        "reason": "Some are fooled by localhost"
    },
    {
        "email": "sam@com",
        "valid": true,
        "reason": "Strangely, the rules allow for a top-level domain to receive email"
    },
    {
        "email": "hello world@example.com",
        "valid": false,
        "reason": "Spaces are not allowed without quoting"
    },
    {
        "email": "moose@example com",
        "valid": false,
        "reason": "Domains can not have spaces"
    },
    {
        "email": "bird@test example.com",
        "valid": false,
        "reason": "Spaces must be quoted"
    },
    {
        "email": "Abc\\\\@example.com",
        "valid": false,
        "reason": "Escaping not allowed without quoting"
    },
    {
        "email": "Abc\\@def@example.com",
        "valid": false,
        "reason": "Escaping not allowed without quoting"
    },
    {
        "email": "Joe.\\\\Blow@example.com",
        "valid": false,
        "reason": "Escaping not allowed without quoting"
    },
    {
        "email": "woo\\ yay@example.com",
        "valid": false,
        "reason": "Escaping not allowed without quoting"
    },
    {
        "email": "\\$A12345@example.com",
        "valid": false,
        "reason": "Escaping not allowed without quoting"
    },
    {
        "email": "abc@def@example.com",
        "valid": false,
        "reason": "Two @ symbols not allowed without quoting"
    },
    {
        "email": "one\\@two@example.com",
        "valid": false,
        "reason": "Escaping doesn't make it valid either"
    },
    {
        "email": "Abc\\\\@def@example.com",
        "valid": false,
        "reason": "Escaping not allowed without quoting"
    },
    {
        "email": "one\\.two@example.com",
        "valid": false,
        "reason": "Escaping not allowed without quoting"
    },
    {
        "email": "\"woo.yay\"@example.com",
        "valid": true,
        "reason": "No need to quote this one, but no reason to not quote either"
    },
    {
        "email": "\"Abc@def\"@example.com",
        "valid": true,
        "reason": "Properly quoted"
    },
    {
        "email": "\"Abc\\@def\"@example.com",
        "valid": true,
        "reason": "Properly quoted, optionally escaped"
    },
    {
        "email": "\"Fred Frederson\"@example.com",
        "valid": true,
        "reason": "Spaces are allowed when quoted"
    },
    {
        "email": "\" Test\"@example.com",
        "valid": true,
        "reason": "Leading spaces may be evil but allowed"
    },
    {
        "email": "\"Fred\\ Frederson\"@example.com",
        "valid": true,
        "reason": "Spaces are allowed and can be escaped"
    },
    {
        "email": "\"Joe.\\\\Test\"@example.com",
        "valid": true,
        "reason": "An escaped backslash"
    },
    {
        "email": "\"abc\\\\\"@example.com",
        "valid": true,
        "reason": "Escaped backslash at the end confuses some parsers"
    },
    {
        "email": "\"\\$A12345\"@example.com",
        "valid": true,
        "reason": "Proper quoting"
    },
    {
        "email": "\"Tyler \\\"The Man\\\" A.\"@example.com",
        "valid": true,
        "reason": "Quoted localparts can have escaped quotes"
    },
    {
        "email": "\"Tyler\\ \\\"The\\ Man\\\"\\ A\\.\"@example.com",
        "valid": true,
        "reason": "Escaping a lot more"
    },
    {
        "email": "\"Quote \\\" Quote\"@example.com",
        "valid": true,
        "reason": "Some parsers have issues with the singleton quote"
    },
    {
        "email": "\"\"@the-void.example.com",
        "valid": true,
        "reason": "An empty quoted localpart is valid... somehow"
    },
    {
        "email": "\"two..dot\"@example.com",
        "valid": true,
        "reason": "Double periods are allowed in a quoted localpart"
    },
    {
        "email": "\"[bracket]\"@example.com",
        "valid": true,
        "reason": "Square brackets are fine inside quotes"
    },
    {
        "email": "\"first\".second@employs.obsolete.trick",
        "valid": false,
        "reason": "Quoting only part of the local part is obsolete, and SMTP will not take it"
    },
    {
        "email": "\"quote@example.com",
        "valid": false,
        "reason": "Unbalanced quotes"
    },
    {
        "email": "quote\"@example.com",
        "valid": false,
        "reason": "Unbalanced quotes"
    },
    {
        "email": "quote\\\"@example.com",
        "valid": false,
        "reason": "Escaping doesn't make it valid either"
    },
    {
        "email": "\"Tyler \"The Man\" A.\"@example.com",
        "valid": false,
        "reason": "Quotes in the middle must be escaped"
    },
    {
        "email": "Tyler\\ \\\"The Man\\\"\\ Akins@example.com",
        "valid": false,
        "reason": "Escaping characters requires the localpart to be quoted"
    },
    {
        "email": "Tyler\\ \\\"The Man\\\"\\ A\\.@example.com",
        "valid": false,
        "reason": "Escaping characters requires the localpart to be quoted"
    },
    {
        "email": "\"first.\"second@bad-quoting.info",
        "valid": false,
        "reason": "The quotes must surround the whole local part"
    },
    {
        "email": "\"tab\there\"@example.com",
        "valid": false,
        "reason": "SMTP does not allow tabs, even in quotes"
    },
    {
        "email": "\"a\u0001b\"@example.com",
        "valid": false,
        "reason": "Control characters are not allowed, even in quotes"
    },
    {
        "email": "\"\\é\"@example.com",
        "valid": false,
        "reason": "Only ASCII characters can be escaped"
    },
    {
        "email": "testingAVeryLongEmailAddressAgainstTheParser.ThisOneShouldBeGood@e.ca",
        "valid": true,
        "reason": "64 characters in the localpart"
    },
    {
        "email": "testingAVeryLongEmailAddressAgainstTheParser.ThisOneIsABadAddress@e.ca",
        "valid": false,
        "reason": "The localpart is one character too long"
    },
    {
        "email": "x@superduperlonglinethatisexactlysixtythreecharactersjustfortests.com",
        "valid": true,
        "reason": "63 letters is the maximum length of a label in the domain"
    },
    {
        "email": "x@superduperlonglinewaymorethansixtythreecharactersforsureblahblah.com",
        "valid": false,
        "reason": "Domain label is one character too long"
    },
    {
        "email": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd.com",
        "valid": true,
        "reason": "254 characters is the longest an address can be"
    },
    {
        "email": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.dddddddddddddddddddddddddddddddddddddddddddddddddddddddddd.com",
        "valid": false,
        "reason": "One character over the 254 limit"
    },
    {
        "email": "éééééééééééééééééééééééééééééééé@example.com",
        "valid": true,
        "reason": "64 bytes of local part, since each é takes two"
    },
    {
        "email": "ééééééééééééééééééééééééééééééééé@example.com",
        "valid": false,
        "reason": "The 64-character limit counts bytes, and é takes two"
    },
    {
        "email": "@example.com",
        "valid": false,
        "reason": "No localpart"
    },
    {
        "email": "doug@",
        "valid": false,
        "reason": "No domain"
    },
    {
        "email": ".dot@example.com",
        "valid": false,
        "reason": "Localpart can not start with a period"
    },
    {
        "email": "dot.@example.com",
        "valid": false,
        "reason": "Localpart can not end with a period"
    },
    {
        "email": "two..dot@example.com",
        "valid": false,
        "reason": "Localpart can not have two successive periods"
    },
    {
        "email": "matt@.example.com",
        "valid": false,
        "reason": "Domain starts with a period"
    },
    {
        "email": "matt@example.com.",
        "valid": false,
        "reason": "Domain ends with a period"
    },
    {
        "email": "timothy@test-host..tld",
        "valid": false,
        "reason": "Domain contains double period"
    },
    {
        "email": "user@???",
        "valid": false,
        "reason": "A domain only has letters, digits, and hyphens"
    },
    {
        "email": "user@domain.c0m",
        "valid": false,
        "reason": "A top-level domain is all letters, or an xn-- label"
    },
    {
        "email": "user@-example.com",
        "valid": false,
        "reason": "Domain has leading hyphen on a label"
    },
    {
        "email": "user@example-.com",
        "valid": false,
        "reason": "Domain has trailing hyphen on a label"
    },
    {
        "email": "user@test.-example.com",
        "valid": false,
        "reason": "Domain has a leading hyphen on a label"
    },
    {
        "email": "user@test--example.com",
        "valid": true,
        "reason": "Two hyphens in a row are allowed inside a label"
    },
    {
        "email": "user@xn--bcher-kva.example",
        "valid": true,
        "reason": "Internationalized domains are encoded with a leading xn--"
    },
    {
        "email": "user@example.xn--p1ai",
        "valid": true,
        "reason": "Internationalized top-level domains are xn-- labels too"
    },
    {
        "email": "user@ab--cd.example",
        "valid": true,
        "reason": "IDNA reserves hyphens in the third and fourth places, but SMTP still delivers"
    },
    {
        "email": "user@exa!mple.com",
        "valid": false,
        "reason": "Domain labels can only have letters, digits, and hyphens"
    },
    {
        "email": "user@under_score.com",
        "valid": false,
        "reason": "Underscores are not allowed in a domain"
    },
    {
        "email": "\"quoted\"@ex$ample.com",
        "valid": false,
        "reason": "Quoting the localpart does not loosen the rules for the domain"
    },
    {
        "email": "josé@example.com",
        "valid": true,
        "reason": "SMTPUTF8 allows UTF-8 in the local part"
    },
    {
        "email": "用户@例子.广告",
        "valid": true,
        "reason": "Chinese in both parts"
    },
    {
        "email": "δοκιμή@παράδειγμα.δοκιμή",
        "valid": true,
        "reason": "Greek in both parts"
    },
    {
        "email": "user@bücher.example",
        "valid": true,
        "reason": "A Unicode label, which DNS stores as xn--bcher-kva"
    },
    {
        "email": "user@ab--ü.example",
        "valid": false,
        "reason": "IDNA does not allow -- in the third and fourth places of a Unicode label"
    },
    {
        "email": "user@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaü.example",
        "valid": false,
        "reason": "This label is 59 bytes, but 65 once it is encoded as xn--"
    },
    {
        "email": "joe@123.45.67.89",
        "valid": false,
        "reason": "An IP address must be in brackets"
    },
    {
        "email": "joe@[123.45.67.89]",
        "valid": true,
        "reason": "An IPv4 address in brackets"
    },
    {
        "email": "joe@[10.0.0.1]",
        "valid": true,
        "reason": "Zero is a valid IPv4 number"
    },
    {
        "email": "joe@[010.001.000.001]",
        "valid": true,
        "reason": "SMTP's grammar allows leading zeros in an IPv4 literal"
    },
    {
        "email": "joe@[123.456.7.89]",
        "valid": false,
        "reason": "456 is out of range for IPv4"
    },
    {
        "email": "joe@[1.2.3]",
        "valid": false,
        "reason": "An IPv4 literal needs four numbers"
    },
    {
        "email": "joe@2001:0db8::1428:57ab",
        "valid": false,
        "reason": "An IPv6 address must be in brackets, tagged IPv6:"
    },
    {
        "email": "joe@[2001:db8::1428:57ab]",
        "valid": false,
        "reason": "IPv6 literals need the IPv6: tag"
    },
    {
        "email": "joe@[IPv6:2001:db8::1428:57ab]",
        "valid": true,
        "reason": "A compressed IPv6 literal"
    },
    {
        "email": "joe@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]",
        "valid": true,
        "reason": "A full IPv6 literal"
    },
    {
        "email": "joe@[ipv6:2001:db8::1]",
        "valid": true,
        "reason": "The IPv6: tag is not case-sensitive"
    },
    {
        "email": "joe@[IPv6:::1]",
        "valid": true,
        "reason": "The loopback address"
    },
    {
        "email": "joe@[IPv6:::ffff:192.0.2.1]",
        "valid": true,
        "reason": "IPv6 can end in an IPv4 address"
    },
    {
        "email": "joe@[IPv6:1:2:3:4:5:6:7]",
        "valid": false,
        "reason": "A full IPv6 address has eight groups"
    },
    {
        "email": "joe@[IPv6:1:2:3:4:5:6:7::8]",
        "valid": false,
        "reason": "With ::, at most six other groups can appear"
    },
    {
        "email": "joe@[IPv6:1::2::3]",
        "valid": false,
        "reason": "Only one :: is allowed"
    },
    {
        "email": "mike@[IPv6:9472:0f6e::1bg0:9876]",
        "valid": false,
        "reason": "g is not a hex digit"
    },
    {
        "email": "mike@[IPv6:9472:0f6e::1b810:9876]",
        "valid": false,
        "reason": "Each IPv6 group has at most four hex digits"
    },
    {
        "email": "joe@[future:anything]",
        "valid": false,
        "reason": "IPv6 is the only registered address literal tag"
    },
    {
        "email": "test@[example.com]",
        "valid": false,
        "reason": "Brackets hold an IP address, not a domain name"
    },
    {
        "email": "example@[hello world.com]",
        "valid": false,
        "reason": "Brackets hold an IP address, not a domain name"
    },
    {
        "email": "cat@[example].com",
        "valid": false,
        "reason": "Invalid bracketing"
    },
    {
        "email": "mouse@[test example].com",
        "valid": false,
        "reason": "The brackets must hold the whole domain"
    },
    {
        "email": "dog@[example.com",
        "valid": false,
        "reason": "Unbalanced brackets"
    },
    {
        "email": "ant@[test\\ example].com",
        "valid": false,
        "reason": "The brackets must hold the whole domain"
    }
]
