Format of this file is as follows: If the line's first character is a colon (:), then that is the start of a definition. (The rest of the line can be used as a comment.) The line after the colon is the line to be interpretted. The second line after the colon is the number of expected addresses. For each expected address another pair of lines is present. The first line is the expected address and the second line is the expected name. Note that if no name or no address is expected, then the line must appear but be blank. Lines after these are the e-mail addresses put back together in modern format. : Test 1: Test of a simple address someguy@domain.example 1 someguy@domain.example someguy@domain.example : Test 2: Test of another simple address. 1 someguy@domain.example someguy@domain.example : Test 3: Test of a quoted section "Some Guy" 1 someguy@domain.example Some Guy Some Guy : Test 4: Test of a Bracketted section (a comment) (To be ignored) 1 someguy@domain.example someguy@domain.example : Test 5: Test of both bracket and quoted sections together "Some Guy" (To be ignored) 1 someguy@domain.example Some Guy Some Guy : Test 6: Test of a bracketted section inside the e-mail address. 1 someguy@domain.example someguy@domain.example : Test 7: Test of a lots of brackets with escaped brackets (Brackets to ignore) "Some Guy (Brackets to be retained)" (Brackets (nested) and brackets \(not nested\)to ignore) 1 someguy@domain.example Some Guy (Brackets to be retained) "Some Guy (Brackets to be retained)" : Test 8: Test of quoted e-mail address. <"Some Guy"@domain.example> 1 Some Guy@domain.example <"Some Guy"@domain.example> : Test 9: Test of silly quoted-address (but remaining valid) "Some Guy with \"quotes\" in \"quotes\"" <"Some Guy @ domain.example with \"quotes\""@domain.example> 1 Some Guy @ domain.example with "quotes"@domain.example Some Guy with "quotes" in "quotes" "Some Guy with \"quotes\" in \"quotes\"" <"Some Guy @ domain.example with \"quotes\""@domain.example> : Test 10: Test to ignore would-be signals inside quotes & brackets. "Some <,>()@ Guy" (Brackets ,"<> to be ignored) ,@")@domain.example> 1 someguy@domain.example Some <,>()@ Guy "Some <,>()@ Guy" : Test 11: Simple dual-address line firstguy@domain.example, secondguy@domain.example 2 firstguy@domain.example secondguy@domain.example firstguy@domain.example secondguy@domain.example : Test 12: Second simple dual-address line. , secondguy@domain.example 2 firstguy@domain.example secondguy@domain.example firstguy@domain.example secondguy@domain.example : Test 13: Third simple dual-address line. , 2 firstguy@domain.example secondguy@domain.example firstguy@domain.example secondguy@domain.example : Test 14: Fourth simple dual-address line. firstguy@domain.example, 2 firstguy@domain.example secondguy@domain.example firstguy@domain.example secondguy@domain.example : Test 15: Dual-addresses with names "First guy" , "Second guy" 2 firstguy@domain.example First guy secondguy@domain.example Second guy First guy Second guy : Test 16: Throw in a couple (!) of comments (Ignore this bracket) "First (To be kept) guy" (Ignore) <(ignore)firstguy(ignore)@(ignore)domain(ignore).(ignore)example(ignore)>, "Second (To be kept) guy" <(ignore)secondguy(ignore)@(ignore)domain(ignore).(ignore)example(ignore)> 2 firstguy@domain.example First (To be kept) guy secondguy@domain.example Second (To be kept) guy "First (To be kept) guy" "Second (To be kept) guy" : Test 17: Real-world example (Bug 262 with names changed), apparently this format can be produced by Eudora's Redirect command. Also the '.' character forces the quotation of the name. "First G. Guy" (by way of ) 1 firstgguy@domain.example First G. Guy "First G. Guy" : Test 18: Test of a single address containing spaces in the domain 1 someguy@domain.example someguy@domain.example : Test 19: A group containing one address One Group: "First Guy" ; 1 firstguy@domain.example First Guy First Guy : Test 20: A group containing two addresses One group: "First Guy" , "Second Guy" ; 2 firstguy@domain.example First Guy secondguy@domain.example Second Guy First Guy Second Guy : Test 21: An empty group Empty group: ; 0 : Test 22: Two groups One group: "First Guy" , "Second Guy" ; Second group: "Third guy" , "Fourth guy" ; 4 firstguy@domain.example First Guy secondguy@domain.example Second Guy thirdguy@domain.example Third guy fourthguy@domain.example Fourth guy First Guy Second Guy Third guy Fourth guy : Test 23: address outside of groups One group: "First Guy" , "Second guy" ; "Third guy" 3 firstguy@domain.example First Guy secondguy@domain.example Second guy thirdguy@domain.example Third guy First Guy Second guy Third guy : Test 24: Sublime Their lordships: "Madam elevated" , "His wigship" ; Their regalnesses: "\"One\"" , "Other \"One\"" ; 4 elevatedmadam@lords.example Madam elevated eveningred@lords.example His wigship one@regal.example "One" otherone@regal.example Other "One" Madam elevated His wigship "\"One\"" "Other \"One\"" : Test 25: Ridiculous (Ingore some text) One group: (These are the first group (nested bracket) escaped brackets \(\)) "First Guy with \"quotes\"" <(some text to be ignored)first(ignore)guy(ignore)@ (ignore) domain . (ignore) example > , (ignore) "Second Guy with brackets (to be kept) " ; Group Two : "Third Guy" ; Empty Group: ; "Fourth Guy" 4 firstguy@domain.example First Guy with "quotes" secondguy@domain.example Second Guy with brackets (to be kept) thirdguy@long.domain.too.short.yet.domain.example Third Guy fourthguy@domain.example Fourth Guy "First Guy with \"quotes\"" "Second Guy with brackets (to be kept) " Third Guy Fourth Guy : Test 26: Format forgotten to test... First Guy 1 firstguy@domain.example First Guy First Guy : Test 27: Now with silly spaces & brackets (Ignore) First Guy (Ignore) 1 firstguy@domain.example First Guy First Guy : Test 28: Multiple forgotten format First Guy , Second Guy 2 firstguy@domain.example First Guy secondguy@domain.example Second Guy First Guy Second Guy : Test 29: Interchangeable formats First Guy , "Second Guy" , thirdguy@domain.example 3 firstguy@domain.example First Guy secondguy@domain.example Second Guy thirdguy@domain.example First Guy Second Guy thirdguy@domain.example : Test 30 : Old, depraciated format - must never generate but must support for extraction "First Guy" firstguy@domain.example 1 firstguy@domain.example First Guy First Guy : Test 31 : Multiple old format "First Guy" firstguy@domain.example, "Second guy" secondguy@domain.example 2 firstguy@domain.example First Guy secondguy@domain.example Second guy First Guy Second guy : Test 32 : Interchangeable formats "First Guy" firstguy@domain.example, "Second Guy" , Third Guy , fourthguy@domain.example, 5 firstguy@domain.example First Guy secondguy@domain.example Second Guy thirdguy@domain.example Third Guy fourthguy@domain.example fifthguy@domain.example First Guy Second Guy Third Guy fourthguy@domain.example fifthguy@domain.example : Test 33 : Spaces after email address when bracketed comment is removed johndoe@abc.company.co.uk (John Doe) 1 johndoe@abc.company.co.uk johndoe@abc.company.co.uk : Test 34 : Spaces before email address when bracketed comment is removed (John Doe) johndoe@abc.company.co.uk 1 johndoe@abc.company.co.uk johndoe@abc.company.co.uk : Test 35 : TIdEMailAddressItem.SetText - BUG SMS News Service 1 sms@skt2.ufanet.ru SMS News Service SMS News Service