summaryrefslogtreecommitdiff
path: root/pear/packages/Mail-1.1.0.tar
blob: 081feb836f720f45b847ed730e88f4d8fe27caa6 (plain)
ofshex dumpascii
0000 70 61 63 6b 61 67 65 2e 78 6d 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 package.xml.....................
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 31 30 30 36 34 34 20 00 20 20 31 37 35 30 20 00 20 20 31 37 35 30 20 00 20 20 20 20 ....100644....1750....1750......
0080 20 20 20 34 33 36 30 20 20 37 36 37 34 37 35 36 34 30 33 20 20 20 36 34 32 32 20 00 00 00 00 00 ...4360..7674756403...6422......
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 49 53 <?xml.version="1.0".encoding="IS
0220 4f 2d 38 38 35 39 2d 31 22 20 3f 3e 0a 3c 70 61 63 6b 61 67 65 20 76 65 72 73 69 6f 6e 3d 22 31 O-8859-1".?>.<package.version="1
0240 2e 30 22 3e 0a 20 20 3c 6e 61 6d 65 3e 4d 61 69 6c 3c 2f 6e 61 6d 65 3e 0a 20 20 3c 73 75 6d 6d .0">...<name>Mail</name>...<summ
0260 61 72 79 3e 43 6c 61 73 73 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 6d 75 6c 74 69 70 6c 65 ary>Class.that.provides.multiple
0280 20 69 6e 74 65 72 66 61 63 65 73 20 66 6f 72 20 73 65 6e 64 69 6e 67 20 65 6d 61 69 6c 73 3c 2f .interfaces.for.sending.emails</
02a0 73 75 6d 6d 61 72 79 3e 0a 20 20 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 68 65 20 50 45 41 52 summary>...<description>The.PEAR
02c0 27 73 20 4d 61 69 6c 3a 3a 20 69 6e 74 65 72 66 61 63 65 2c 20 64 65 66 69 6e 65 73 20 74 68 65 's.Mail::.interface,.defines.the
02e0 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 3c 2f 64 65 73 .interface.for.implementing</des
0300 63 72 69 70 74 69 6f 6e 3e 0a 20 20 3c 6d 61 69 6e 74 61 69 6e 65 72 73 3e 0a 20 20 20 20 3c 6d cription>...<maintainers>.....<m
0320 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 20 20 20 20 3c 75 73 65 72 3e 63 68 61 67 65 6e 62 75 3c aintainer>.......<user>chagenbu<
0340 2f 75 73 65 72 3e 0a 20 20 20 20 20 20 3c 6e 61 6d 65 3e 43 68 75 63 6b 20 48 61 67 65 6e 62 75 /user>.......<name>Chuck.Hagenbu
0360 63 68 3c 2f 6e 61 6d 65 3e 0a 20 20 20 20 20 20 3c 65 6d 61 69 6c 3e 63 68 75 63 6b 40 68 6f 72 ch</name>.......<email>chuck@hor
0380 64 65 2e 6f 72 67 3c 2f 65 6d 61 69 6c 3e 0a 20 20 20 20 20 20 3c 72 6f 6c 65 3e 6c 65 61 64 3c de.org</email>.......<role>lead<
03a0 2f 72 6f 6c 65 3e 0a 20 20 20 20 3c 2f 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 20 20 3c 6d 61 /role>.....</maintainer>.....<ma
03c0 69 6e 74 61 69 6e 65 72 3e 0a 20 20 20 20 20 20 3c 75 73 65 72 3e 72 69 63 68 61 72 64 3c 2f 75 intainer>.......<user>richard</u
03e0 73 65 72 3e 0a 20 20 20 20 20 20 3c 6e 61 6d 65 3e 52 69 63 68 61 72 64 20 48 65 79 65 73 3c 2f ser>.......<name>Richard.Heyes</
0400 6e 61 6d 65 3e 0a 20 20 20 20 20 20 3c 65 6d 61 69 6c 3e 72 69 63 68 61 72 64 40 70 68 70 67 75 name>.......<email>richard@phpgu
0420 72 75 2e 6f 72 67 3c 2f 65 6d 61 69 6c 3e 0a 20 20 20 20 20 20 3c 72 6f 6c 65 3e 64 65 76 65 6c ru.org</email>.......<role>devel
0440 6f 70 65 72 3c 2f 72 6f 6c 65 3e 0a 20 20 20 20 3c 2f 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 oper</role>.....</maintainer>...
0460 20 20 3c 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 20 20 20 20 3c 75 73 65 72 3e 6a 6f 6e 3c 2f ..<maintainer>.......<user>jon</
0480 75 73 65 72 3e 0a 20 20 20 20 20 20 3c 6e 61 6d 65 3e 4a 6f 6e 20 50 61 72 69 73 65 3c 2f 6e 61 user>.......<name>Jon.Parise</na
04a0 6d 65 3e 0a 20 20 20 20 20 20 3c 65 6d 61 69 6c 3e 6a 6f 6e 40 70 68 70 2e 6e 65 74 3c 2f 65 6d me>.......<email>jon@php.net</em
04c0 61 69 6c 3e 0a 20 20 20 20 20 20 3c 72 6f 6c 65 3e 64 65 76 65 6c 6f 70 65 72 3c 2f 72 6f 6c 65 ail>.......<role>developer</role
04e0 3e 0a 20 20 20 20 3c 2f 6d 61 69 6e 74 61 69 6e 65 72 3e 0a 20 20 3c 2f 6d 61 69 6e 74 61 69 6e >.....</maintainer>...</maintain
0500 65 72 73 3e 0a 20 20 3c 72 65 6c 65 61 73 65 3e 0a 20 20 20 20 3c 76 65 72 73 69 6f 6e 3e 31 2e ers>...<release>.....<version>1.
0520 31 2e 30 3c 2f 76 65 72 73 69 6f 6e 3e 0a 20 20 20 20 3c 64 61 74 65 3e 32 30 30 33 2d 30 36 2d 1.0</version>.....<date>2003-06-
0540 32 31 3c 2f 64 61 74 65 3e 0a 20 20 20 20 3c 6c 69 63 65 6e 73 65 3e 50 48 50 2f 42 53 44 3c 2f 21</date>.....<license>PHP/BSD</
0560 6c 69 63 65 6e 73 65 3e 0a 20 20 20 20 3c 73 74 61 74 65 3e 73 74 61 62 6c 65 3c 2f 73 74 61 74 license>.....<state>stable</stat
0580 65 3e 0a 20 20 20 20 3c 6e 6f 74 65 73 3e 54 68 65 20 4d 61 69 6c 20 70 61 63 6b 61 67 65 20 6e e>.....<notes>The.Mail.package.n
05a0 6f 77 20 64 65 70 65 6e 64 73 20 6f 6e 20 4e 65 74 5f 53 4d 54 50 20 31 2e 31 2e 30 20 6f 72 20 ow.depends.on.Net_SMTP.1.1.0.or.
05c0 67 72 65 61 74 65 72 20 66 6f 72 20 69 74 73 20 53 4d 54 50 20 61 75 74 68 65 6e 74 69 63 61 74 greater.for.its.SMTP.authenticat
05e0 69 6f 6e 20 63 61 70 61 62 69 6c 69 74 69 65 73 2e 3c 2f 6e 6f 74 65 73 3e 0a 20 20 20 20 3c 64 ion.capabilities.</notes>.....<d
0600 65 70 73 3e 0a 20 20 20 20 20 20 3c 64 65 70 20 74 79 70 65 3d 22 70 6b 67 22 20 72 65 6c 3d 22 eps>.......<dep.type="pkg".rel="
0620 67 65 22 20 76 65 72 73 69 6f 6e 3d 22 31 2e 31 2e 30 22 3e 4e 65 74 5f 53 4d 54 50 3c 2f 64 65 ge".version="1.1.0">Net_SMTP</de
0640 70 3e 0a 20 20 20 20 3c 2f 64 65 70 73 3e 0a 20 20 20 20 3c 66 69 6c 65 6c 69 73 74 3e 0a 20 20 p>.....</deps>.....<filelist>...
0660 20 20 20 20 3c 66 69 6c 65 20 72 6f 6c 65 3d 22 70 68 70 22 20 6d 64 35 73 75 6d 3d 22 36 35 36 ....<file.role="php".md5sum="656
0680 35 39 65 65 30 64 66 38 63 61 32 34 38 62 61 33 37 61 35 62 63 38 32 35 32 33 30 35 35 22 20 6e 59ee0df8ca248ba37a5bc82523055".n
06a0 61 6d 65 3d 22 4d 61 69 6c 2e 70 68 70 22 2f 3e 0a 20 20 20 20 20 20 3c 66 69 6c 65 20 72 6f 6c ame="Mail.php"/>.......<file.rol
06c0 65 3d 22 70 68 70 22 20 6d 64 35 73 75 6d 3d 22 61 38 37 65 39 65 63 32 61 64 32 61 32 35 62 66 e="php".md5sum="a87e9ec2ad2a25bf
06e0 32 65 35 63 34 33 31 36 31 66 66 61 33 65 65 31 22 20 6e 61 6d 65 3d 22 4d 61 69 6c 2f 6d 61 69 2e5c43161ffa3ee1".name="Mail/mai
0700 6c 2e 70 68 70 22 2f 3e 0a 20 20 20 20 20 20 3c 66 69 6c 65 20 72 6f 6c 65 3d 22 70 68 70 22 20 l.php"/>.......<file.role="php".
0720 6d 64 35 73 75 6d 3d 22 36 30 39 32 66 37 61 63 61 62 38 37 63 61 37 39 31 30 63 61 63 37 61 65 md5sum="6092f7acab87ca7910cac7ae
0740 37 39 39 66 39 32 30 38 22 20 6e 61 6d 65 3d 22 4d 61 69 6c 2f 73 65 6e 64 6d 61 69 6c 2e 70 68 799f9208".name="Mail/sendmail.ph
0760 70 22 2f 3e 0a 20 20 20 20 20 20 3c 66 69 6c 65 20 72 6f 6c 65 3d 22 70 68 70 22 20 6d 64 35 73 p"/>.......<file.role="php".md5s
0780 75 6d 3d 22 36 30 31 65 33 66 33 33 33 39 36 35 31 32 63 66 38 36 61 39 35 39 34 39 36 36 35 65 um="601e3f33396512cf86a95949665e
07a0 64 30 30 38 22 20 6e 61 6d 65 3d 22 4d 61 69 6c 2f 73 6d 74 70 2e 70 68 70 22 2f 3e 0a 20 20 20 d008".name="Mail/smtp.php"/>....
07c0 20 20 20 3c 66 69 6c 65 20 72 6f 6c 65 3d 22 70 68 70 22 20 6d 64 35 73 75 6d 3d 22 61 31 65 30 ...<file.role="php".md5sum="a1e0
07e0 36 61 63 33 63 65 38 33 38 63 62 38 31 65 64 35 30 39 37 39 32 64 34 38 37 38 37 35 22 20 6e 61 6ac3ce838cb81ed509792d487875".na
0800 6d 65 3d 22 4d 61 69 6c 2f 52 46 43 38 32 32 2e 70 68 70 22 2f 3e 0a 20 20 20 20 3c 2f 66 69 6c me="Mail/RFC822.php"/>.....</fil
0820 65 6c 69 73 74 3e 0a 20 20 3c 2f 72 65 6c 65 61 73 65 3e 0a 20 20 3c 63 68 61 6e 67 65 6c 6f 67 elist>...</release>...<changelog
0840 3e 0a 20 20 20 20 3c 72 65 6c 65 61 73 65 3e 0a 20 20 20 20 20 20 3c 76 65 72 73 69 6f 6e 3e 31 >.....<release>.......<version>1
0860 2e 30 2e 32 3c 2f 76 65 72 73 69 6f 6e 3e 0a 20 20 20 20 20 20 3c 64 61 74 65 3e 32 30 30 32 2d .0.2</version>.......<date>2002-
0880 30 37 2d 32 37 3c 2f 64 61 74 65 3e 0a 20 20 20 20 20 20 3c 73 74 61 74 65 3e 73 74 61 62 6c 65 07-27</date>.......<state>stable
08a0 3c 2f 73 74 61 74 65 3e 0a 20 20 20 20 20 20 3c 6e 6f 74 65 73 3e 4d 69 6e 6f 72 20 61 64 64 69 </state>.......<notes>Minor.addi
08c0 74 69 6f 6e 73 20 61 6e 64 20 63 68 61 6e 67 65 73 20 74 6f 20 52 46 43 38 32 32 2e 70 68 70 2e tions.and.changes.to.RFC822.php.
08e0 20 46 69 78 65 64 20 6c 69 6e 65 20 74 65 72 6d 69 6e 61 74 6f 72 20 69 73 73 75 65 20 66 6f 72 .Fixed.line.terminator.issue.for
0900 20 73 6d 74 70 2e 70 68 70 20 61 6e 64 20 73 65 74 20 73 6d 74 70 2e 70 68 70 20 74 6f 20 75 73 .smtp.php.and.set.smtp.php.to.us
0920 65 20 52 65 74 75 72 6e 2d 50 61 74 68 20 68 65 61 64 65 72 20 69 6e 20 70 6c 61 63 65 20 6f 66 e.Return-Path.header.in.place.of
0940 20 46 72 6f 6d 20 68 65 61 64 65 72 20 66 6f 72 20 4d 41 49 4c 20 46 52 4f 4d 3a 20 28 69 66 20 .From.header.for.MAIL.FROM:.(if.
0960 73 75 70 70 6c 69 65 64 29 0a 3c 2f 6e 6f 74 65 73 3e 0a 20 20 20 20 3c 2f 72 65 6c 65 61 73 65 supplied).</notes>.....</release
0980 3e 0a 20 20 20 20 3c 72 65 6c 65 61 73 65 3e 0a 20 20 20 20 20 20 3c 76 65 72 73 69 6f 6e 3e 31 >.....<release>.......<version>1
09a0 2e 30 2e 31 3c 2f 76 65 72 73 69 6f 6e 3e 0a 20 20 20 20 20 20 3c 64 61 74 65 3e 32 30 30 32 2d .0.1</version>.......<date>2002-
09c0 30 37 2d 32 37 3c 2f 64 61 74 65 3e 0a 20 20 20 20 20 20 3c 73 74 61 74 65 3e 73 74 61 62 6c 65 07-27</date>.......<state>stable
09e0 3c 2f 73 74 61 74 65 3e 0a 20 20 20 20 20 20 3c 6e 6f 74 65 73 3e 4c 69 63 65 6e 73 65 20 63 68 </state>.......<notes>License.ch
0a00 61 6e 67 65 20 66 6f 72 20 52 46 43 38 32 32 2e 70 68 70 0a 3c 2f 6e 6f 74 65 73 3e 0a 20 20 20 ange.for.RFC822.php.</notes>....
0a20 20 3c 2f 72 65 6c 65 61 73 65 3e 0a 20 20 20 20 3c 72 65 6c 65 61 73 65 3e 0a 20 20 20 20 20 20 .</release>.....<release>.......
0a40 3c 76 65 72 73 69 6f 6e 3e 31 2e 30 3c 2f 76 65 72 73 69 6f 6e 3e 0a 20 20 20 20 20 20 3c 64 61 <version>1.0</version>.......<da
0a60 74 65 3e 32 30 30 32 2d 30 36 2d 30 36 3c 2f 64 61 74 65 3e 0a 20 20 20 20 20 20 3c 73 74 61 74 te>2002-06-06</date>.......<stat
0a80 65 3e 73 74 61 62 6c 65 3c 2f 73 74 61 74 65 3e 0a 20 20 20 20 20 20 3c 6e 6f 74 65 73 3e 49 6e e>stable</state>.......<notes>In
0aa0 69 74 69 61 6c 20 72 65 6c 65 61 73 65 20 61 73 20 50 45 41 52 20 70 61 63 6b 61 67 65 0a 3c 2f itial.release.as.PEAR.package.</
0ac0 6e 6f 74 65 73 3e 0a 20 20 20 20 3c 2f 72 65 6c 65 61 73 65 3e 0a 20 20 3c 2f 63 68 61 6e 67 65 notes>.....</release>...</change
0ae0 6c 6f 67 3e 0a 3c 2f 70 61 63 6b 61 67 65 3e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 log>.</package>.................
0b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c00 4d 61 69 6c 2d 31 2e 31 2e 30 2f 4d 61 69 6c 2e 70 68 70 00 00 00 00 00 00 00 00 00 00 00 00 00 Mail-1.1.0/Mail.php.............
0c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0c60 00 00 00 00 31 30 30 36 34 34 20 00 20 20 31 37 35 30 20 00 20 20 31 37 35 30 20 00 20 20 20 20 ....100644....1750....1750......
0c80 20 20 31 36 32 32 36 20 20 37 36 37 34 37 35 35 34 36 33 20 20 20 37 32 34 36 20 00 00 00 00 00 ..16226..7674755463...7246......
0ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0e00 3c 3f 70 68 70 0a 2f 2f 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d <?php.//.//.+-------------------
0e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0e40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 50 48 50 20 56 65 -------------------+.//.|.PHP.Ve
0e60 72 73 69 6f 6e 20 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rsion.4.........................
0e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c ...............................|
0ea0 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .//.+---------------------------
0ec0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0ee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 -----------+.//.|.Copyright.(c).
0f00 31 39 39 37 2d 32 30 30 33 20 54 68 65 20 50 48 50 20 47 72 6f 75 70 20 20 20 20 20 20 20 20 20 1997-2003.The.PHP.Group.........
0f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d .......................|.//.+---
0f40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0f60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0f80 2d 2d 2d 2b 0a 2f 2f 20 7c 20 54 68 69 73 20 73 6f 75 72 63 65 20 66 69 6c 65 20 69 73 20 73 75 ---+.//.|.This.source.file.is.su
0fa0 62 6a 65 63 74 20 74 6f 20 76 65 72 73 69 6f 6e 20 32 2e 30 32 20 6f 66 20 74 68 65 20 50 48 50 bject.to.version.2.02.of.the.PHP
0fc0 20 6c 69 63 65 6e 73 65 2c 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 74 68 61 74 20 69 73 20 62 75 .license,......|.//.|.that.is.bu
0fe0 6e 64 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 70 61 63 6b 61 67 65 20 69 6e 20 74 68 65 20 66 ndled.with.this.package.in.the.f
1000 69 6c 65 20 4c 49 43 45 4e 53 45 2c 20 61 6e 64 20 69 73 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 ile.LICENSE,.and.is........|.//.
1020 7c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 77 6f 72 6c 64 |.available.at.through.the.world
1040 2d 77 69 64 65 2d 77 65 62 20 61 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -wide-web.at....................
1060 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 68 74 74 70 3a 2f 2f 77 77 77 2e 70 68 70 2e 6e 65 74 .......|.//.|.http://www.php.net
1080 2f 6c 69 63 65 6e 73 65 2f 32 5f 30 32 2e 74 78 74 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 /license/2_02.txt...............
10a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 49 66 20 79 6f 75 ...................|.//.|.If.you
10c0 20 64 69 64 20 6e 6f 74 20 72 65 63 65 69 76 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 50 .did.not.receive.a.copy.of.the.P
10e0 48 50 20 6c 69 63 65 6e 73 65 20 61 6e 64 20 61 72 65 20 75 6e 61 62 6c 65 20 74 6f 20 20 20 7c HP.license.and.are.unable.to...|
1100 0a 2f 2f 20 7c 20 6f 62 74 61 69 6e 20 69 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 77 6f 72 6c .//.|.obtain.it.through.the.worl
1120 64 2d 77 69 64 65 2d 77 65 62 2c 20 70 6c 65 61 73 65 20 73 65 6e 64 20 61 20 6e 6f 74 65 20 74 d-wide-web,.please.send.a.note.t
1140 6f 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 6c 69 63 65 6e 73 65 40 70 68 70 2e 6e 65 o..........|.//.|.license@php.ne
1160 74 20 73 6f 20 77 65 20 63 61 6e 20 6d 61 69 6c 20 79 6f 75 20 61 20 63 6f 70 79 20 69 6d 6d 65 t.so.we.can.mail.you.a.copy.imme
1180 64 69 61 74 65 6c 79 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d diately................|.//.+---
11a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
11e0 2d 2d 2d 2b 0a 2f 2f 20 7c 20 41 75 74 68 6f 72 3a 20 43 68 75 63 6b 20 48 61 67 65 6e 62 75 63 ---+.//.|.Author:.Chuck.Hagenbuc
1200 68 20 3c 63 68 75 63 6b 40 68 6f 72 64 65 2e 6f 72 67 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 h.<chuck@horde.org>.............
1220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...............|.//.+-----------
1240 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
1260 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 0a ---------------------------+.//.
1280 2f 2f 20 24 49 64 3a 20 4d 61 69 6c 2e 70 68 70 2c 76 20 31 2e 35 20 32 30 30 33 2f 30 36 2f 32 //.$Id:.Mail.php,v.1.5.2003/06/2
12a0 30 20 30 35 3a 30 38 3a 30 33 20 6a 6f 6e 20 45 78 70 20 24 0a 0a 72 65 71 75 69 72 65 5f 6f 6e 0.05:08:03.jon.Exp.$..require_on
12c0 63 65 20 27 50 45 41 52 2e 70 68 70 27 3b 0a 0a 2f 2a 2a 0a 20 2a 20 50 45 41 52 27 73 20 4d 61 ce.'PEAR.php';../**..*.PEAR's.Ma
12e0 69 6c 3a 3a 20 69 6e 74 65 72 66 61 63 65 2e 20 44 65 66 69 6e 65 73 20 74 68 65 20 69 6e 74 65 il::.interface..Defines.the.inte
1300 72 66 61 63 65 20 66 6f 72 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 0a 20 2a 20 6d 61 69 6c 65 72 rface.for.implementing..*.mailer
1320 73 20 75 6e 64 65 72 20 74 68 65 20 50 45 41 52 20 68 69 65 72 61 72 63 68 79 2c 20 61 6e 64 20 s.under.the.PEAR.hierarchy,.and.
1340 70 72 6f 76 69 64 65 73 20 73 75 70 70 6f 72 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 0a 20 2a provides.supporting.functions..*
1360 20 75 73 65 66 75 6c 20 69 6e 20 6d 75 6c 74 69 70 6c 65 20 6d 61 69 6c 65 72 20 62 61 63 6b 65 .useful.in.multiple.mailer.backe
1380 6e 64 73 2e 0a 20 2a 0a 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 2a 20 40 76 65 nds...*..*.@access.public..*.@ve
13a0 72 73 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e 35 20 24 0a 20 2a 20 40 70 61 63 6b 61 rsion.$Revision:.1.5.$..*.@packa
13c0 67 65 20 4d 61 69 6c 0a 20 2a 2f 0a 63 6c 61 73 73 20 4d 61 69 6c 0a 7b 0a 20 20 20 20 2f 2a 2a ge.Mail..*/.class.Mail.{...../**
13e0 0a 20 20 20 20 20 2a 20 4c 69 6e 65 20 74 65 72 6d 69 6e 61 74 6f 72 20 75 73 65 64 20 66 6f 72 ......*.Line.terminator.used.for
1400 20 73 65 70 61 72 61 74 69 6e 67 20 68 65 61 64 65 72 20 6c 69 6e 65 73 2e 0a 20 20 20 20 20 2a .separating.header.lines.......*
1420 20 40 76 61 72 20 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 73 65 .@var.string......*/.....var.$se
1440 70 20 3d 20 22 5c 72 5c 6e 22 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 50 72 6f 76 p.=."\r\n";....../**......*.Prov
1460 69 64 65 73 20 61 6e 20 69 6e 74 65 72 66 61 63 65 20 66 6f 72 20 67 65 6e 65 72 61 74 69 6e 67 ides.an.interface.for.generating
1480 20 4d 61 69 6c 3a 3a 20 6f 62 6a 65 63 74 73 20 6f 66 20 76 61 72 69 6f 75 73 0a 20 20 20 20 20 .Mail::.objects.of.various......
14a0 2a 20 74 79 70 65 73 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 *.types......*......*.@param.str
14c0 69 6e 67 20 24 64 72 69 76 65 72 20 54 68 65 20 6b 69 6e 64 20 6f 66 20 4d 61 69 6c 3a 3a 20 6f ing.$driver.The.kind.of.Mail::.o
14e0 62 6a 65 63 74 20 74 6f 20 69 6e 73 74 61 6e 74 69 61 74 65 2e 0a 20 20 20 20 20 2a 20 40 70 61 bject.to.instantiate.......*.@pa
1500 72 61 6d 20 61 72 72 61 79 20 20 24 70 61 72 61 6d 73 20 54 68 65 20 70 61 72 61 6d 65 74 65 72 ram.array..$params.The.parameter
1520 73 20 74 6f 20 70 61 73 73 20 74 6f 20 74 68 65 20 4d 61 69 6c 3a 3a 20 6f 62 6a 65 63 74 2e 0a s.to.pass.to.the.Mail::.object..
1540 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6f 62 6a 65 63 74 20 4d 61 69 6c 20 61 20 69 6e 73 .....*.@return.object.Mail.a.ins
1560 74 61 6e 63 65 20 6f 66 20 74 68 65 20 64 72 69 76 65 72 20 63 6c 61 73 73 20 6f 72 20 69 66 20 tance.of.the.driver.class.or.if.
1580 66 61 69 6c 73 20 61 20 50 45 41 52 20 45 72 72 6f 72 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 fails.a.PEAR.Error......*.@acces
15a0 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 66 61 s.public......*/.....function.fa
15c0 63 74 6f 72 79 28 24 64 72 69 76 65 72 2c 20 24 70 61 72 61 6d 73 20 3d 20 61 72 72 61 79 28 29 ctory($driver,.$params.=.array()
15e0 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 64 72 69 76 65 72 20 3d 20 73 74 72 74 6f 6c ).....{.........$driver.=.strtol
1600 6f 77 65 72 28 24 64 72 69 76 65 72 29 3b 0a 20 20 20 20 20 20 20 20 40 69 6e 63 6c 75 64 65 5f ower($driver);.........@include_
1620 6f 6e 63 65 20 27 4d 61 69 6c 2f 27 20 2e 20 24 64 72 69 76 65 72 20 2e 20 27 2e 70 68 70 27 3b once.'Mail/'...$driver...'.php';
1640 0a 20 20 20 20 20 20 20 20 24 63 6c 61 73 73 20 3d 20 27 4d 61 69 6c 5f 27 20 2e 20 24 64 72 69 .........$class.=.'Mail_'...$dri
1660 76 65 72 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6c 61 73 73 5f 65 78 69 73 74 73 28 24 63 ver;.........if.(class_exists($c
1680 6c 61 73 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 lass)).{.............return.new.
16a0 24 63 6c 61 73 73 28 24 70 61 72 61 6d 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 $class($params);.........}.else.
16c0 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 50 45 41 52 3a 3a 72 61 69 73 65 {.............return.PEAR::raise
16e0 45 72 72 6f 72 28 27 55 6e 61 62 6c 65 20 74 6f 20 66 69 6e 64 20 63 6c 61 73 73 20 66 6f 72 20 Error('Unable.to.find.class.for.
1700 64 72 69 76 65 72 20 27 20 2e 20 24 64 72 69 76 65 72 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 driver.'...$driver);.........}..
1720 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 73 20 ...}....../**......*.Implements.
1740 4d 61 69 6c 3a 3a 73 65 6e 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 75 73 69 6e 67 20 70 68 70 27 Mail::send().function.using.php'
1760 73 20 62 75 69 6c 74 2d 69 6e 20 6d 61 69 6c 28 29 0a 20 20 20 20 20 2a 20 63 6f 6d 6d 61 6e 64 s.built-in.mail()......*.command
1780 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d 69 78 65 64 20 24 72 65 .......*......*.@param.mixed.$re
17a0 63 69 70 69 65 6e 74 73 20 45 69 74 68 65 72 20 61 20 63 6f 6d 6d 61 2d 73 65 70 65 72 61 74 65 cipients.Either.a.comma-seperate
17c0 64 20 6c 69 73 74 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 0a 20 20 20 20 20 2a 20 20 20 20 20 d.list.of.recipients......*.....
17e0 20 20 20 20 20 20 20 20 20 28 52 46 43 38 32 32 20 63 6f 6d 70 6c 69 61 6e 74 29 2c 20 6f 72 20 .........(RFC822.compliant),.or.
1800 61 6e 20 61 72 72 61 79 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 2c 0a 20 20 20 20 20 2a 20 20 an.array.of.recipients,......*..
1820 20 20 20 20 20 20 20 20 20 20 20 20 65 61 63 68 20 52 46 43 38 32 32 20 76 61 6c 69 64 2e 20 54 ............each.RFC822.valid..T
1840 68 69 73 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 72 65 63 69 70 69 65 6e 74 73 20 6e 6f 74 0a 20 his.may.contain.recipients.not..
1860 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 ....*..............specified.in.
1880 74 68 65 20 68 65 61 64 65 72 73 2c 20 66 6f 72 20 42 63 63 3a 2c 20 72 65 73 65 6e 64 69 6e 67 the.headers,.for.Bcc:,.resending
18a0 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 73 2c 20 65 ......*..............messages,.e
18c0 74 63 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 tc.......*......*.@param.array.$
18e0 68 65 61 64 65 72 73 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 68 65 61 64 65 72 73 20 74 6f 20 headers.The.array.of.headers.to.
1900 73 65 6e 64 20 77 69 74 68 20 74 68 65 20 6d 61 69 6c 2c 20 69 6e 20 61 6e 0a 20 20 20 20 20 2a send.with.the.mail,.in.an......*
1920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 6f 63 69 61 74 69 76 65 20 61 72 72 61 79 2c ..............associative.array,
1940 20 77 68 65 72 65 20 74 68 65 20 61 72 72 61 79 20 6b 65 79 20 69 73 20 74 68 65 0a 20 20 20 20 .where.the.array.key.is.the.....
1960 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 20 6e 61 6d 65 20 28 69 65 2c .*..............header.name.(ie,
1980 20 27 53 75 62 6a 65 63 74 27 29 2c 20 61 6e 64 20 74 68 65 20 61 72 72 61 79 20 76 61 6c 75 65 .'Subject'),.and.the.array.value
19a0 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 74 68 65 20 68 65 61 64 ......*..............is.the.head
19c0 65 72 20 76 61 6c 75 65 20 28 69 65 2c 20 27 74 65 73 74 27 29 2e 20 54 68 65 20 68 65 61 64 65 er.value.(ie,.'test')..The.heade
19e0 72 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 64 75 63 65 64 20 66 r......*..............produced.f
1a00 72 6f 6d 20 74 68 6f 73 65 20 76 61 6c 75 65 73 20 77 6f 75 6c 64 20 62 65 20 27 53 75 62 6a 65 rom.those.values.would.be.'Subje
1a20 63 74 3a 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 73 74 27 2e 0a 20 ct:......*..............test'...
1a40 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 62 6f 64 79 ....*......*.@param.string.$body
1a60 20 54 68 65 20 66 75 6c 6c 20 74 65 78 74 20 6f 66 20 74 68 65 20 6d 65 73 73 61 67 65 20 62 6f .The.full.text.of.the.message.bo
1a80 64 79 2c 20 69 6e 63 6c 75 64 69 6e 67 20 61 6e 79 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 dy,.including.any......*........
1aa0 20 20 20 20 20 20 20 4d 69 6d 65 20 70 61 72 74 73 2c 20 65 74 63 2e 0a 20 20 20 20 20 2a 0a 20 .......Mime.parts,.etc.......*..
1ac0 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 52 65 74 75 72 6e 73 20 74 72 75 65 ....*.@return.mixed.Returns.true
1ae0 20 6f 6e 20 73 75 63 63 65 73 73 2c 20 6f 72 20 61 20 50 45 41 52 5f 45 72 72 6f 72 0a 20 20 20 .on.success,.or.a.PEAR_Error....
1b00 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 64 ..*...............containing.a.d
1b20 65 73 63 72 69 70 74 69 76 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 6f 6e 0a 20 20 20 20 escriptive.error.message.on.....
1b40 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 2a .*...............failure.......*
1b60 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 64 65 70 72 65 63 61 74 .@access.public......*.@deprecat
1b80 65 64 20 75 73 65 20 4d 61 69 6c 5f 6d 61 69 6c 3a 3a 73 65 6e 64 20 69 6e 73 74 65 61 64 0a 20 ed.use.Mail_mail::send.instead..
1ba0 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 6e 64 28 24 72 65 63 69 70 69 ....*/.....function.send($recipi
1bc0 65 6e 74 73 2c 20 24 68 65 61 64 65 72 73 2c 20 24 62 6f 64 79 29 0a 20 20 20 20 7b 0a 20 20 20 ents,.$headers,.$body).....{....
1be0 20 20 20 20 20 2f 2f 20 69 66 20 77 65 27 72 65 20 70 61 73 73 65 64 20 61 6e 20 61 72 72 61 79 .....//.if.we're.passed.an.array
1c00 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 2c 20 69 6d 70 6c 6f 64 65 20 69 74 2e 0a 20 20 20 20 .of.recipients,.implode.it......
1c20 20 20 20 20 69 66 20 28 69 73 5f 61 72 72 61 79 28 24 72 65 63 69 70 69 65 6e 74 73 29 29 20 7b ....if.(is_array($recipients)).{
1c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 65 63 69 70 69 65 6e 74 73 20 3d 20 69 6d 70 6c 6f .............$recipients.=.implo
1c60 64 65 28 27 2c 20 27 2c 20 24 72 65 63 69 70 69 65 6e 74 73 29 3b 0a 20 20 20 20 20 20 20 20 7d de(',.',.$recipients);.........}
1c80 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 67 65 74 20 74 68 65 20 53 75 62 6a 65 63 74 20 6f 75 74 ..........//.get.the.Subject.out
1ca0 20 6f 66 20 74 68 65 20 68 65 61 64 65 72 73 20 61 72 72 61 79 20 73 6f 20 74 68 61 74 20 77 65 .of.the.headers.array.so.that.we
1cc0 20 63 61 6e 0a 20 20 20 20 20 20 20 20 2f 2f 20 70 61 73 73 20 69 74 20 61 73 20 61 20 73 65 70 .can.........//.pass.it.as.a.sep
1ce0 65 72 61 74 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 6d 61 69 6c 28 29 2e 0a 20 20 20 20 20 20 erate.argument.to.mail()........
1d00 20 20 24 73 75 62 6a 65 63 74 20 3d 20 27 27 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 ..$subject.=.'';.........if.(iss
1d20 65 74 28 24 68 65 61 64 65 72 73 5b 27 53 75 62 6a 65 63 74 27 5d 29 29 20 7b 0a 20 20 20 20 20 et($headers['Subject'])).{......
1d40 20 20 20 20 20 20 20 24 73 75 62 6a 65 63 74 20 3d 20 24 68 65 61 64 65 72 73 5b 27 53 75 62 6a .......$subject.=.$headers['Subj
1d60 65 63 74 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 73 65 74 28 24 68 65 61 64 65 72 ect'];.............unset($header
1d80 73 5b 27 53 75 62 6a 65 63 74 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 s['Subject']);.........}........
1da0 20 20 2f 2f 20 66 6c 61 74 74 65 6e 20 74 68 65 20 68 65 61 64 65 72 73 20 6f 75 74 2e 0a 20 20 ..//.flatten.the.headers.out....
1dc0 20 20 20 20 20 20 6c 69 73 74 28 2c 24 74 65 78 74 5f 68 65 61 64 65 72 73 29 20 3d 20 4d 61 69 ......list(,$text_headers).=.Mai
1de0 6c 3a 3a 70 72 65 70 61 72 65 48 65 61 64 65 72 73 28 24 68 65 61 64 65 72 73 29 3b 0a 0a 20 20 l::prepareHeaders($headers);....
1e00 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 61 69 6c 28 24 72 65 63 69 70 69 65 6e 74 73 2c 20 24 ......return.mail($recipients,.$
1e20 73 75 62 6a 65 63 74 2c 20 24 62 6f 64 79 2c 20 24 74 65 78 74 5f 68 65 61 64 65 72 73 29 3b 0a subject,.$body,.$text_headers);.
1e40 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 61 6b 65 20 61 6e 20 61 .....}....../**......*.Take.an.a
1e60 72 72 61 79 20 6f 66 20 6d 61 69 6c 20 68 65 61 64 65 72 73 20 61 6e 64 20 72 65 74 75 72 6e 20 rray.of.mail.headers.and.return.
1e80 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 20 20 20 20 20 2a 20 74 65 78 74 20 a.string.containing......*.text.
1ea0 75 73 61 62 6c 65 20 69 6e 20 73 65 6e 64 69 6e 67 20 61 20 6d 65 73 73 61 67 65 2e 0a 20 20 20 usable.in.sending.a.message.....
1ec0 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 68 65 61 64 65 72 73 ..*......*.@param.array.$headers
1ee0 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 68 65 61 64 65 72 73 20 74 6f 20 70 72 65 70 61 72 65 .The.array.of.headers.to.prepare
1f00 2c 20 69 6e 20 61 6e 20 61 73 73 6f 63 69 61 74 69 76 65 0a 20 20 20 20 20 2a 20 20 20 20 20 20 ,.in.an.associative......*......
1f20 20 20 20 20 20 20 20 20 61 72 72 61 79 2c 20 77 68 65 72 65 20 74 68 65 20 61 72 72 61 79 20 6b ........array,.where.the.array.k
1f40 65 79 20 69 73 20 74 68 65 20 68 65 61 64 65 72 20 6e 61 6d 65 20 28 69 65 2c 0a 20 20 20 20 20 ey.is.the.header.name.(ie,......
1f60 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 53 75 62 6a 65 63 74 27 29 2c 20 61 6e 64 20 74 *..............'Subject'),.and.t
1f80 68 65 20 61 72 72 61 79 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 68 65 61 64 65 72 0a 20 20 20 he.array.value.is.the.header....
1fa0 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 28 69 65 2c 20 27 74 65 73 ..*..............value.(ie,.'tes
1fc0 74 27 29 2e 20 54 68 65 20 68 65 61 64 65 72 20 70 72 6f 64 75 63 65 64 20 66 72 6f 6d 20 74 68 t')..The.header.produced.from.th
1fe0 6f 73 65 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 73 20 77 ose......*..............values.w
2000 6f 75 6c 64 20 62 65 20 27 53 75 62 6a 65 63 74 3a 20 74 65 73 74 27 2e 0a 20 20 20 20 20 2a 0a ould.be.'Subject:.test'.......*.
2020 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 52 65 74 75 72 6e 73 20 66 61 6c .....*.@return.mixed.Returns.fal
2040 73 65 20 69 66 20 69 74 20 65 6e 63 6f 75 6e 74 65 72 73 20 61 20 62 61 64 20 61 64 64 72 65 73 se.if.it.encounters.a.bad.addres
2060 73 2c 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 s,......*...............otherwis
2080 65 20 72 65 74 75 72 6e 73 20 61 6e 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 77 e.returns.an.array.containing.tw
20a0 6f 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 73 3a o......*...............elements:
20c0 20 41 6e 79 20 46 72 6f 6d 3a 20 61 64 64 72 65 73 73 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 .Any.From:.address.found.in.the.
20e0 68 65 61 64 65 72 73 2c 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e headers,......*...............an
2100 64 20 74 68 65 20 70 6c 61 69 6e 20 74 65 78 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 d.the.plain.text.version.of.the.
2120 68 65 61 64 65 72 73 2e 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a headers.......*.@access.private.
2140 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 72 65 70 61 72 65 48 65 61 64 .....*/.....function.prepareHead
2160 65 72 73 28 24 68 65 61 64 65 72 73 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 6c 69 6e ers($headers).....{.........$lin
2180 65 73 20 3d 20 61 72 72 61 79 28 29 3b 0a 20 20 20 20 20 20 20 20 24 66 72 6f 6d 20 3d 20 6e 75 es.=.array();.........$from.=.nu
21a0 6c 6c 3b 0a 0a 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 24 68 65 61 64 65 72 73 20 61 ll;..........foreach.($headers.a
21c0 73 20 24 6b 65 79 20 3d 3e 20 24 76 61 6c 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 s.$key.=>.$value).{.............
21e0 69 66 20 28 24 6b 65 79 20 3d 3d 3d 20 27 46 72 6f 6d 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 if.($key.===.'From').{..........
2200 20 20 20 20 20 20 20 69 6e 63 6c 75 64 65 5f 6f 6e 63 65 20 27 4d 61 69 6c 2f 52 46 43 38 32 32 .......include_once.'Mail/RFC822
2220 2e 70 68 70 27 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 65 73 73 .php';..................$address
2240 65 73 20 3d 20 4d 61 69 6c 5f 52 46 43 38 32 32 3a 3a 70 61 72 73 65 41 64 64 72 65 73 73 4c 69 es.=.Mail_RFC822::parseAddressLi
2260 73 74 28 24 76 61 6c 75 65 2c 20 27 6c 6f 63 61 6c 68 6f 73 74 27 2c 0a 20 20 20 20 20 20 20 20 st($value,.'localhost',.........
2280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
22a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 ...................false);......
22c0 20 20 20 20 20 20 20 20 20 20 20 24 66 72 6f 6d 20 3d 20 24 61 64 64 72 65 73 73 65 73 5b 30 5d ...........$from.=.$addresses[0]
22e0 2d 3e 6d 61 69 6c 62 6f 78 20 2e 20 27 40 27 20 2e 20 24 61 64 64 72 65 73 73 65 73 5b 30 5d 2d ->mailbox...'@'...$addresses[0]-
2300 3e 68 6f 73 74 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 52 65 6a 65 63 >host;..................//.Rejec
2320 74 20 65 6e 76 65 6c 6f 70 65 20 46 72 6f 6d 3a 20 61 64 64 72 65 73 73 65 73 20 77 69 74 68 20 t.envelope.From:.addresses.with.
2340 73 70 61 63 65 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 73 spaces..................if.(strs
2360 74 72 28 24 66 72 6f 6d 2c 20 27 20 27 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tr($from,.'.')).{...............
2380 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ......return.false;.............
23a0 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 6c 69 6e 65 73 5b 5d 20 ....}..................$lines[].
23c0 3d 20 24 6b 65 79 20 2e 20 27 3a 20 27 20 2e 20 24 76 61 6c 75 65 3b 0a 20 20 20 20 20 20 20 20 =.$key...':.'...$value;.........
23e0 20 20 20 20 7d 20 65 6c 73 65 69 66 20 28 24 6b 65 79 20 3d 3d 3d 20 27 52 65 63 65 69 76 65 64 ....}.elseif.($key.===.'Received
2400 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 50 75 74 20 52 65 63 65 ').{.................//.Put.Rece
2420 69 76 65 64 3a 20 68 65 61 64 65 72 73 20 61 74 20 74 68 65 20 74 6f 70 2e 20 20 53 70 61 6d 20 ived:.headers.at.the.top...Spam.
2440 64 65 74 65 63 74 6f 72 73 20 6f 66 74 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 detectors.often.................
2460 2f 2f 20 66 6c 61 67 20 6d 65 73 73 61 67 65 73 20 77 69 74 68 20 52 65 63 65 69 76 65 64 3a 20 //.flag.messages.with.Received:.
2480 68 65 61 64 65 72 73 20 61 66 74 65 72 20 74 68 65 20 53 75 62 6a 65 63 74 3a 0a 20 20 20 20 20 headers.after.the.Subject:......
24a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 73 20 73 70 61 6d 2e 0a 20 20 20 20 20 20 20 20 20 ...........//.as.spam...........
24c0 20 20 20 20 20 20 20 61 72 72 61 79 5f 75 6e 73 68 69 66 74 28 24 6c 69 6e 65 73 2c 20 24 6b 65 .......array_unshift($lines,.$ke
24e0 79 20 2e 20 27 3a 20 27 20 2e 20 24 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 y...':.'...$value);.............
2500 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 6c 69 6e 65 73 5b }.else.{.................$lines[
2520 5d 20 3d 20 24 6b 65 79 20 2e 20 27 3a 20 27 20 2e 20 24 76 61 6c 75 65 3b 0a 20 20 20 20 20 20 ].=.$key...':.'...$value;.......
2540 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ......}.........}..........retur
2560 6e 20 61 72 72 61 79 28 24 66 72 6f 6d 2c 20 6a 6f 69 6e 28 24 74 68 69 73 2d 3e 73 65 70 2c 20 n.array($from,.join($this->sep,.
2580 24 6c 69 6e 65 73 29 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 $lines));.....}....../**......*.
25a0 54 61 6b 65 20 61 20 73 65 74 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 20 61 6e 64 20 70 61 72 Take.a.set.of.recipients.and.par
25c0 73 65 20 74 68 65 6d 2c 20 72 65 74 75 72 6e 69 6e 67 20 61 6e 20 61 72 72 61 79 20 6f 66 0a 20 se.them,.returning.an.array.of..
25e0 20 20 20 20 2a 20 62 61 72 65 20 61 64 64 72 65 73 73 65 73 20 28 66 6f 72 77 61 72 64 20 70 61 ....*.bare.addresses.(forward.pa
2600 74 68 73 29 20 74 68 61 74 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 74 6f 20 73 65 6e 64 6d ths).that.can.be.passed.to.sendm
2620 61 69 6c 0a 20 20 20 20 20 2a 20 6f 72 20 61 6e 20 73 6d 74 70 20 73 65 72 76 65 72 20 77 69 74 ail......*.or.an.smtp.server.wit
2640 68 20 74 68 65 20 72 63 70 74 20 74 6f 3a 20 63 6f 6d 6d 61 6e 64 2e 0a 20 20 20 20 20 2a 0a 20 h.the.rcpt.to:.command.......*..
2660 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d 69 78 65 64 20 45 69 74 68 65 72 20 61 20 63 6f 6d 6d ....*.@param.mixed.Either.a.comm
2680 61 2d 73 65 70 65 72 61 74 65 64 20 6c 69 73 74 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 0a 20 a-seperated.list.of.recipients..
26a0 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 52 46 43 38 32 32 20 63 6f 6d 70 6c ....*..............(RFC822.compl
26c0 69 61 6e 74 29 2c 20 6f 72 20 61 6e 20 61 72 72 61 79 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 iant),.or.an.array.of.recipients
26e0 2c 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 61 63 68 20 52 46 43 38 32 ,......*..............each.RFC82
2700 32 20 76 61 6c 69 64 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 61 2.valid.......*......*.@return.a
2720 72 72 61 79 20 41 6e 20 61 72 72 61 79 20 6f 66 20 66 6f 72 77 61 72 64 20 70 61 74 68 73 20 28 rray.An.array.of.forward.paths.(
2740 62 61 72 65 20 61 64 64 72 65 73 73 65 73 29 2e 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 bare.addresses).......*.@access.
2760 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 private......*/.....function.par
2780 73 65 52 65 63 69 70 69 65 6e 74 73 28 24 72 65 63 69 70 69 65 6e 74 73 29 0a 20 20 20 20 7b 0a seRecipients($recipients).....{.
27a0 20 20 20 20 20 20 20 20 69 6e 63 6c 75 64 65 5f 6f 6e 63 65 20 27 4d 61 69 6c 2f 52 46 43 38 32 ........include_once.'Mail/RFC82
27c0 32 2e 70 68 70 27 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 66 20 77 65 27 72 65 20 70 61 73 2.php';..........//.if.we're.pas
27e0 73 65 64 20 61 6e 20 61 72 72 61 79 2c 20 61 73 73 75 6d 65 20 61 64 64 72 65 73 73 65 73 20 61 sed.an.array,.assume.addresses.a
2800 72 65 20 76 61 6c 69 64 20 61 6e 64 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 6d 70 6c 6f 64 65 20 re.valid.and.........//.implode.
2820 74 68 65 6d 20 62 65 66 6f 72 65 20 70 61 72 73 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 69 66 20 them.before.parsing..........if.
2840 28 69 73 5f 61 72 72 61 79 28 24 72 65 63 69 70 69 65 6e 74 73 29 29 20 7b 0a 20 20 20 20 20 20 (is_array($recipients)).{.......
2860 20 20 20 20 20 20 24 72 65 63 69 70 69 65 6e 74 73 20 3d 20 69 6d 70 6c 6f 64 65 28 27 2c 20 27 ......$recipients.=.implode(',.'
2880 2c 20 24 72 65 63 69 70 69 65 6e 74 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 ,.$recipients);.........}.......
28a0 20 20 20 2f 2f 20 50 61 72 73 65 20 72 65 63 69 70 69 65 6e 74 73 2c 20 6c 65 61 76 69 6e 67 20 ...//.Parse.recipients,.leaving.
28c0 6f 75 74 20 61 6c 6c 20 70 65 72 73 6f 6e 61 6c 20 69 6e 66 6f 2e 20 54 68 69 73 20 69 73 0a 20 out.all.personal.info..This.is..
28e0 20 20 20 20 20 20 20 2f 2f 20 66 6f 72 20 73 6d 74 70 20 72 65 63 69 70 69 65 6e 74 73 2c 20 65 .......//.for.smtp.recipients,.e
2900 74 63 2e 20 41 6c 6c 20 72 65 6c 65 76 61 6e 74 20 70 65 72 73 6f 6e 61 6c 20 69 6e 66 6f 72 6d tc..All.relevant.personal.inform
2920 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 2f 2f 20 73 68 6f 75 6c 64 20 61 6c 72 65 61 64 79 20 ation.........//.should.already.
2940 62 65 20 69 6e 20 74 68 65 20 68 65 61 64 65 72 73 2e 0a 20 20 20 20 20 20 20 20 24 61 64 64 72 be.in.the.headers..........$addr
2960 65 73 73 65 73 20 3d 20 4d 61 69 6c 5f 52 46 43 38 32 32 3a 3a 70 61 72 73 65 41 64 64 72 65 73 esses.=.Mail_RFC822::parseAddres
2980 73 4c 69 73 74 28 24 72 65 63 69 70 69 65 6e 74 73 2c 20 27 6c 6f 63 61 6c 68 6f 73 74 27 2c 20 sList($recipients,.'localhost',.
29a0 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 24 72 65 63 69 70 69 65 6e 74 73 20 3d 20 61 72 false);.........$recipients.=.ar
29c0 72 61 79 28 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 5f 61 72 72 61 79 28 24 61 64 64 ray();.........if.(is_array($add
29e0 72 65 73 73 65 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 resses)).{.............foreach.(
2a00 24 61 64 64 72 65 73 73 65 73 20 61 73 20 24 6f 62 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 $addresses.as.$ob).{............
2a20 20 20 20 20 20 24 72 65 63 69 70 69 65 6e 74 73 5b 5d 20 3d 20 24 6f 62 2d 3e 6d 61 69 6c 62 6f .....$recipients[].=.$ob->mailbo
2a40 78 20 2e 20 27 40 27 20 2e 20 24 6f 62 2d 3e 68 6f 73 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 x...'@'...$ob->host;............
2a60 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 72 65 .}.........}..........return.$re
2a80 63 69 70 69 65 6e 74 73 3b 0a 20 20 20 20 7d 0a 0a 7d 0a 3f 3e 0a 00 00 00 00 00 00 00 00 00 00 cipients;.....}..}.?>...........
2aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c00 4d 61 69 6c 2d 31 2e 31 2e 30 2f 4d 61 69 6c 2f 6d 61 69 6c 2e 70 68 70 00 00 00 00 00 00 00 00 Mail-1.1.0/Mail/mail.php........
2c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c60 00 00 00 00 31 30 30 36 34 34 20 00 20 20 31 37 35 30 20 00 20 20 31 37 35 30 20 00 20 20 20 20 ....100644....1750....1750......
2c80 20 20 31 30 32 33 33 20 20 37 36 37 34 37 35 35 34 36 33 20 20 31 30 31 36 30 20 00 00 00 00 00 ..10233..7674755463..10160......
2ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e00 3c 3f 70 68 70 0a 2f 2f 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d <?php.//.//.+-------------------
2e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2e40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 50 48 50 20 56 65 -------------------+.//.|.PHP.Ve
2e60 72 73 69 6f 6e 20 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rsion.4.........................
2e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c ...............................|
2ea0 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .//.+---------------------------
2ec0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2ee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 -----------+.//.|.Copyright.(c).
2f00 31 39 39 37 2d 32 30 30 33 20 54 68 65 20 50 48 50 20 47 72 6f 75 70 20 20 20 20 20 20 20 20 20 1997-2003.The.PHP.Group.........
2f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d .......................|.//.+---
2f40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2f60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2f80 2d 2d 2d 2b 0a 2f 2f 20 7c 20 54 68 69 73 20 73 6f 75 72 63 65 20 66 69 6c 65 20 69 73 20 73 75 ---+.//.|.This.source.file.is.su
2fa0 62 6a 65 63 74 20 74 6f 20 76 65 72 73 69 6f 6e 20 32 2e 30 32 20 6f 66 20 74 68 65 20 50 48 50 bject.to.version.2.02.of.the.PHP
2fc0 20 6c 69 63 65 6e 73 65 2c 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 74 68 61 74 20 69 73 20 62 75 .license,......|.//.|.that.is.bu
2fe0 6e 64 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 70 61 63 6b 61 67 65 20 69 6e 20 74 68 65 20 66 ndled.with.this.package.in.the.f
3000 69 6c 65 20 4c 49 43 45 4e 53 45 2c 20 61 6e 64 20 69 73 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 ile.LICENSE,.and.is........|.//.
3020 7c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 77 6f 72 6c 64 |.available.at.through.the.world
3040 2d 77 69 64 65 2d 77 65 62 20 61 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -wide-web.at....................
3060 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 68 74 74 70 3a 2f 2f 77 77 77 2e 70 68 70 2e 6e 65 74 .......|.//.|.http://www.php.net
3080 2f 6c 69 63 65 6e 73 65 2f 32 5f 30 32 2e 74 78 74 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 /license/2_02.txt...............
30a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 49 66 20 79 6f 75 ...................|.//.|.If.you
30c0 20 64 69 64 20 6e 6f 74 20 72 65 63 65 69 76 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 50 .did.not.receive.a.copy.of.the.P
30e0 48 50 20 6c 69 63 65 6e 73 65 20 61 6e 64 20 61 72 65 20 75 6e 61 62 6c 65 20 74 6f 20 20 20 7c HP.license.and.are.unable.to...|
3100 0a 2f 2f 20 7c 20 6f 62 74 61 69 6e 20 69 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 77 6f 72 6c .//.|.obtain.it.through.the.worl
3120 64 2d 77 69 64 65 2d 77 65 62 2c 20 70 6c 65 61 73 65 20 73 65 6e 64 20 61 20 6e 6f 74 65 20 74 d-wide-web,.please.send.a.note.t
3140 6f 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 6c 69 63 65 6e 73 65 40 70 68 70 2e 6e 65 o..........|.//.|.license@php.ne
3160 74 20 73 6f 20 77 65 20 63 61 6e 20 6d 61 69 6c 20 79 6f 75 20 61 20 63 6f 70 79 20 69 6d 6d 65 t.so.we.can.mail.you.a.copy.imme
3180 64 69 61 74 65 6c 79 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d diately................|.//.+---
31a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
31c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
31e0 2d 2d 2d 2b 0a 2f 2f 20 7c 20 41 75 74 68 6f 72 3a 20 43 68 75 63 6b 20 48 61 67 65 6e 62 75 63 ---+.//.|.Author:.Chuck.Hagenbuc
3200 68 20 3c 63 68 75 63 6b 40 68 6f 72 64 65 2e 6f 72 67 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 h.<chuck@horde.org>.............
3220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...............|.//.+-----------
3240 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3260 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 0a ---------------------------+.//.
3280 2f 2f 20 24 49 64 3a 20 6d 61 69 6c 2e 70 68 70 2c 76 20 31 2e 34 20 32 30 30 33 2f 30 36 2f 32 //.$Id:.mail.php,v.1.4.2003/06/2
32a0 30 20 30 35 3a 30 38 3a 30 33 20 6a 6f 6e 20 45 78 70 20 24 0a 0a 72 65 71 75 69 72 65 5f 6f 6e 0.05:08:03.jon.Exp.$..require_on
32c0 63 65 20 27 4d 61 69 6c 2e 70 68 70 27 3b 0a 0a 2f 2a 2a 0a 20 2a 20 69 6e 74 65 72 6e 61 6c 20 ce.'Mail.php';../**..*.internal.
32e0 50 48 50 2d 6d 61 69 6c 28 29 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 PHP-mail().implementation.of.the
3300 20 50 45 41 52 20 4d 61 69 6c 3a 3a 20 69 6e 74 65 72 66 61 63 65 2e 0a 20 2a 20 40 61 63 63 65 .PEAR.Mail::.interface...*.@acce
3320 73 73 20 70 75 62 6c 69 63 0a 20 2a 20 40 70 61 63 6b 61 67 65 20 4d 61 69 6c 0a 20 2a 20 40 76 ss.public..*.@package.Mail..*.@v
3340 65 72 73 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e 34 20 24 0a 20 2a 2f 0a 20 0a 63 6c ersion.$Revision:.1.4.$..*/...cl
3360 61 73 73 20 4d 61 69 6c 5f 6d 61 69 6c 20 65 78 74 65 6e 64 73 20 4d 61 69 6c 0a 7b 0a 20 20 20 ass.Mail_mail.extends.Mail.{....
3380 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 41 6e 79 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 70 61 73 ./**......*.Any.arguments.to.pas
33a0 73 20 74 6f 20 74 68 65 20 6d 61 69 6c 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 20 20 20 2a s.to.the.mail().function.......*
33c0 20 40 76 61 72 20 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 5f 70 .@var.string......*/.....var.$_p
33e0 61 72 61 6d 73 20 3d 20 27 27 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 6f 6e 73 arams.=.'';....../**......*.Cons
3400 74 72 75 63 74 6f 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 49 6e 73 74 61 6e 74 69 61 tructor.......*......*.Instantia
3420 74 65 73 20 61 20 6e 65 77 20 4d 61 69 6c 5f 6d 61 69 6c 3a 3a 20 6f 62 6a 65 63 74 20 62 61 73 tes.a.new.Mail_mail::.object.bas
3440 65 64 20 6f 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 2a 20 70 61 73 73 ed.on.the.parameters......*.pass
3460 65 64 20 69 6e 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 ed.in.......*......*.@param.stri
3480 6e 67 20 24 70 61 72 61 6d 73 20 45 78 74 72 61 20 61 72 67 75 6d 65 6e 74 73 20 66 6f 72 20 74 ng.$params.Extra.arguments.for.t
34a0 68 65 20 6d 61 69 6c 28 29 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 he.mail().function.......*......
34c0 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e *.@access.public......*/.....fun
34e0 63 74 69 6f 6e 20 4d 61 69 6c 5f 6d 61 69 6c 28 24 70 61 72 61 6d 73 20 3d 20 27 27 29 0a 20 20 ction.Mail_mail($params.=.'')...
3500 20 20 7b 0a 20 20 20 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 20 20 20 2a 20 54 68 65 20 6f 74 ..{........./*..........*.The.ot
3520 68 65 72 20 6d 61 69 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 61 63 63 65 70 74 20 her.mail.implementations.accept.
3540 70 61 72 61 6d 65 74 65 72 73 20 61 73 20 61 72 72 61 79 73 2e 20 20 49 6e 20 74 68 65 0a 20 20 parameters.as.arrays...In.the...
3560 20 20 20 20 20 20 20 2a 20 69 6e 74 65 72 65 73 74 20 6f 66 20 62 65 69 6e 67 20 63 6f 6e 73 69 .......*.interest.of.being.consi
3580 73 74 65 6e 74 2c 20 65 78 70 6c 6f 64 65 20 61 6e 20 61 72 72 61 79 20 69 6e 74 6f 20 61 20 73 stent,.explode.an.array.into.a.s
35a0 74 72 69 6e 67 20 6f 66 0a 20 20 20 20 20 20 20 20 20 2a 20 70 61 72 61 6d 65 74 65 72 20 61 72 tring.of..........*.parameter.ar
35c0 67 75 6d 65 6e 74 73 2e 0a 20 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 guments...........*/.........if.
35e0 28 69 73 5f 61 72 72 61 79 28 24 70 61 72 61 6d 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 (is_array($params)).{...........
3600 20 20 24 74 68 69 73 2d 3e 5f 70 61 72 61 6d 73 20 3d 20 6a 6f 69 6e 28 27 20 27 2c 20 24 70 61 ..$this->_params.=.join('.',.$pa
3620 72 61 6d 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 rams);.........}.else.{.........
3640 20 20 20 20 24 74 68 69 73 2d 3e 5f 70 61 72 61 6d 73 20 3d 20 24 70 61 72 61 6d 73 3b 0a 20 20 ....$this->_params.=.$params;...
3660 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 20 20 20 2a 20 42 ......}........../*..........*.B
3680 65 63 61 75 73 65 20 74 68 65 20 6d 61 69 6c 28 29 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 70 ecause.the.mail().function.may.p
36a0 61 73 73 20 68 65 61 64 65 72 73 20 61 73 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0a 20 20 20 20 ass.headers.as.command.line.....
36c0 20 20 20 20 20 2a 20 61 72 67 75 6d 65 6e 74 73 2c 20 77 65 20 63 61 6e 27 74 20 67 75 61 72 61 .....*.arguments,.we.can't.guara
36e0 6e 74 65 65 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 22 5c 72 ntee.the.use.of.the.standard."\r
3700 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 2a 20 73 65 70 61 72 61 74 6f 72 2e 20 20 49 6e 73 74 65 \n"..........*.separator...Inste
3720 61 64 2c 20 77 65 20 75 73 65 20 74 68 65 20 73 79 73 74 65 6d 27 73 20 6e 61 74 69 76 65 20 6c ad,.we.use.the.system's.native.l
3740 69 6e 65 20 73 65 70 61 72 61 74 6f 72 2e 0a 20 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 ine.separator...........*/......
3760 20 20 20 24 74 68 69 73 2d 3e 73 65 70 20 3d 20 4f 53 5f 57 49 4e 44 4f 57 53 20 3f 20 22 5c 72 ...$this->sep.=.OS_WINDOWS.?."\r
3780 5c 6e 22 20 3a 20 22 5c 6e 22 3b 0a 20 20 20 20 7d 0a 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 \n".:."\n";.....}.../**......*.I
37a0 6d 70 6c 65 6d 65 6e 74 73 20 4d 61 69 6c 5f 6d 61 69 6c 3a 3a 73 65 6e 64 28 29 20 66 75 6e 63 mplements.Mail_mail::send().func
37c0 74 69 6f 6e 20 75 73 69 6e 67 20 70 68 70 27 73 20 62 75 69 6c 74 2d 69 6e 20 6d 61 69 6c 28 29 tion.using.php's.built-in.mail()
37e0 0a 20 20 20 20 20 2a 20 63 6f 6d 6d 61 6e 64 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 ......*.command.......*.......*.
3800 40 70 61 72 61 6d 20 6d 69 78 65 64 20 24 72 65 63 69 70 69 65 6e 74 73 20 45 69 74 68 65 72 20 @param.mixed.$recipients.Either.
3820 61 20 63 6f 6d 6d 61 2d 73 65 70 65 72 61 74 65 64 20 6c 69 73 74 20 6f 66 20 72 65 63 69 70 69 a.comma-seperated.list.of.recipi
3840 65 6e 74 73 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 52 46 43 38 32 32 ents......*..............(RFC822
3860 20 63 6f 6d 70 6c 69 61 6e 74 29 2c 20 6f 72 20 61 6e 20 61 72 72 61 79 20 6f 66 20 72 65 63 69 .compliant),.or.an.array.of.reci
3880 70 69 65 6e 74 73 2c 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 61 63 68 pients,......*..............each
38a0 20 52 46 43 38 32 32 20 76 61 6c 69 64 2e 20 54 68 69 73 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 .RFC822.valid..This.may.contain.
38c0 72 65 63 69 70 69 65 6e 74 73 20 6e 6f 74 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 recipients.not......*...........
38e0 20 20 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 68 65 61 64 65 72 73 2c 20 66 6f 72 ...specified.in.the.headers,.for
3900 20 42 63 63 3a 2c 20 72 65 73 65 6e 64 69 6e 67 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 .Bcc:,.resending......*.........
3920 20 20 20 20 20 6d 65 73 73 61 67 65 73 2c 20 65 74 63 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 .....messages,.etc.......*......
3940 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 68 65 61 64 65 72 73 20 54 68 65 20 61 72 72 61 *.@param.array.$headers.The.arra
3960 79 20 6f 66 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 74 68 65 20 6d 61 y.of.headers.to.send.with.the.ma
3980 69 6c 2c 20 69 6e 20 61 6e 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 il,.in.an......*..............as
39a0 73 6f 63 69 61 74 69 76 65 20 61 72 72 61 79 2c 20 77 68 65 72 65 20 74 68 65 20 61 72 72 61 79 sociative.array,.where.the.array
39c0 20 6b 65 79 20 69 73 20 74 68 65 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .key.is.the......*..............
39e0 68 65 61 64 65 72 20 6e 61 6d 65 20 28 69 65 2c 20 27 53 75 62 6a 65 63 74 27 29 2c 20 61 6e 64 header.name.(ie,.'Subject'),.and
3a00 20 74 68 65 20 61 72 72 61 79 20 76 61 6c 75 65 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 .the.array.value......*.........
3a20 20 20 20 20 20 69 73 20 74 68 65 20 68 65 61 64 65 72 20 76 61 6c 75 65 20 28 69 65 2c 20 27 74 .....is.the.header.value.(ie,.'t
3a40 65 73 74 27 29 2e 20 54 68 65 20 68 65 61 64 65 72 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 est')..The.header......*........
3a60 20 20 20 20 20 20 70 72 6f 64 75 63 65 64 20 66 72 6f 6d 20 74 68 6f 73 65 20 76 61 6c 75 65 73 ......produced.from.those.values
3a80 20 77 6f 75 6c 64 20 62 65 20 27 53 75 62 6a 65 63 74 3a 0a 20 20 20 20 20 2a 20 20 20 20 20 20 .would.be.'Subject:......*......
3aa0 20 20 20 20 20 20 20 20 74 65 73 74 27 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 ........test'.......*......*.@pa
3ac0 72 61 6d 20 73 74 72 69 6e 67 20 24 62 6f 64 79 20 54 68 65 20 66 75 6c 6c 20 74 65 78 74 20 6f ram.string.$body.The.full.text.o
3ae0 66 20 74 68 65 20 6d 65 73 73 61 67 65 20 62 6f 64 79 2c 20 69 6e 63 6c 75 64 69 6e 67 20 61 6e f.the.message.body,.including.an
3b00 79 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 69 6d 65 20 70 61 72 74 y......*...............Mime.part
3b20 73 2c 20 65 74 63 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 s,.etc.......*......*.@return.mi
3b40 78 65 64 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 6f 6e 20 73 75 63 63 65 73 73 2c 20 6f 72 20 xed.Returns.true.on.success,.or.
3b60 61 20 50 45 41 52 5f 45 72 72 6f 72 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 a.PEAR_Error......*.............
3b80 20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 64 65 73 63 72 69 70 74 69 76 65 20 65 72 72 6f 72 ..containing.a.descriptive.error
3ba0 20 6d 65 73 73 61 67 65 20 6f 6e 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .message.on......*..............
3bc0 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a .failure.......*.@access.public.
3be0 20 20 20 20 20 2a 2f 09 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 6e 64 28 24 72 65 63 69 .....*/......function.send($reci
3c00 70 69 65 6e 74 73 2c 20 24 68 65 61 64 65 72 73 2c 20 24 62 6f 64 79 29 0a 20 20 20 20 7b 0a 20 pients,.$headers,.$body).....{..
3c20 20 20 20 20 20 20 20 2f 2f 20 69 66 20 77 65 27 72 65 20 70 61 73 73 65 64 20 61 6e 20 61 72 72 .......//.if.we're.passed.an.arr
3c40 61 79 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 2c 20 69 6d 70 6c 6f 64 65 20 69 74 2e 0a 20 20 ay.of.recipients,.implode.it....
3c60 20 20 20 20 20 20 69 66 20 28 69 73 5f 61 72 72 61 79 28 24 72 65 63 69 70 69 65 6e 74 73 29 29 ......if.(is_array($recipients))
3c80 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 65 63 69 70 69 65 6e 74 73 20 3d 20 69 6d 70 .{.............$recipients.=.imp
3ca0 6c 6f 64 65 28 27 2c 20 27 2c 20 24 72 65 63 69 70 69 65 6e 74 73 29 3b 0a 20 20 20 20 20 20 20 lode(',.',.$recipients);........
3cc0 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 67 65 74 20 74 68 65 20 53 75 62 6a 65 63 74 20 6f .}..........//.get.the.Subject.o
3ce0 75 74 20 6f 66 20 74 68 65 20 68 65 61 64 65 72 73 20 61 72 72 61 79 20 73 6f 20 74 68 61 74 20 ut.of.the.headers.array.so.that.
3d00 77 65 20 63 61 6e 0a 20 20 20 20 20 20 20 20 2f 2f 20 70 61 73 73 20 69 74 20 61 73 20 61 20 73 we.can.........//.pass.it.as.a.s
3d20 65 70 65 72 61 74 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 6d 61 69 6c 28 29 2e 0a 20 20 20 20 eperate.argument.to.mail()......
3d40 20 20 20 20 24 73 75 62 6a 65 63 74 20 3d 20 27 27 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 ....$subject.=.'';.........if.(i
3d60 73 73 65 74 28 24 68 65 61 64 65 72 73 5b 27 53 75 62 6a 65 63 74 27 5d 29 29 20 7b 0a 20 20 20 sset($headers['Subject'])).{....
3d80 20 20 20 20 20 20 20 20 20 24 73 75 62 6a 65 63 74 20 3d 20 24 68 65 61 64 65 72 73 5b 27 53 75 .........$subject.=.$headers['Su
3da0 62 6a 65 63 74 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 73 65 74 28 24 68 65 61 64 bject'];.............unset($head
3dc0 65 72 73 5b 27 53 75 62 6a 65 63 74 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 ers['Subject']);.........}......
3de0 20 20 20 20 2f 2f 20 66 6c 61 74 74 65 6e 20 74 68 65 20 68 65 61 64 65 72 73 20 6f 75 74 2e 0a ....//.flatten.the.headers.out..
3e00 20 20 20 20 20 20 20 20 6c 69 73 74 28 2c 24 74 65 78 74 5f 68 65 61 64 65 72 73 29 20 3d 20 4d ........list(,$text_headers).=.M
3e20 61 69 6c 3a 3a 70 72 65 70 61 72 65 48 65 61 64 65 72 73 28 24 68 65 61 64 65 72 73 29 3b 0a 0a ail::prepareHeaders($headers);..
3e40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6d 61 69 6c 28 24 72 65 63 69 70 69 65 6e 74 73 2c ........return.mail($recipients,
3e60 20 24 73 75 62 6a 65 63 74 2c 20 24 62 6f 64 79 2c 20 24 74 65 78 74 5f 68 65 61 64 65 72 73 2c .$subject,.$body,.$text_headers,
3e80 20 24 74 68 69 73 2d 3e 5f 70 61 72 61 6d 73 29 3b 0a 20 20 20 20 7d 0a 0a 7d 0a 00 00 00 00 00 .$this->_params);.....}..}......
3ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4000 4d 61 69 6c 2d 31 2e 31 2e 30 2f 4d 61 69 6c 2f 73 65 6e 64 6d 61 69 6c 2e 70 68 70 00 00 00 00 Mail-1.1.0/Mail/sendmail.php....
4020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4060 00 00 00 00 31 30 30 36 34 34 20 00 20 20 31 37 35 30 20 00 20 20 31 37 35 30 20 00 20 20 20 20 ....100644....1750....1750......
4080 20 20 31 32 34 34 34 20 20 37 36 37 34 37 35 35 34 36 33 20 20 31 31 30 34 30 20 00 00 00 00 00 ..12444..7674755463..11040......
40a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
40c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
40e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
41a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
41c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
41e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4200 3c 3f 70 68 70 0a 2f 2f 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d <?php.//.//.+-------------------
4220 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
4240 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 50 48 50 20 56 65 -------------------+.//.|.PHP.Ve
4260 72 73 69 6f 6e 20 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rsion.4.........................
4280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c ...............................|
42a0 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .//.+---------------------------
42c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
42e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 -----------+.//.|.Copyright.(c).
4300 31 39 39 37 2d 32 30 30 33 20 54 68 65 20 50 48 50 20 47 72 6f 75 70 20 20 20 20 20 20 20 20 20 1997-2003.The.PHP.Group.........
4320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d .......................|.//.+---
4340 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
4360 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
4380 2d 2d 2d 2b 0a 2f 2f 20 7c 20 54 68 69 73 20 73 6f 75 72 63 65 20 66 69 6c 65 20 69 73 20 73 75 ---+.//.|.This.source.file.is.su
43a0 62 6a 65 63 74 20 74 6f 20 76 65 72 73 69 6f 6e 20 32 2e 30 32 20 6f 66 20 74 68 65 20 50 48 50 bject.to.version.2.02.of.the.PHP
43c0 20 6c 69 63 65 6e 73 65 2c 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 74 68 61 74 20 69 73 20 62 75 .license,......|.//.|.that.is.bu
43e0 6e 64 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 70 61 63 6b 61 67 65 20 69 6e 20 74 68 65 20 66 ndled.with.this.package.in.the.f
4400 69 6c 65 20 4c 49 43 45 4e 53 45 2c 20 61 6e 64 20 69 73 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 ile.LICENSE,.and.is........|.//.
4420 7c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 77 6f 72 6c 64 |.available.at.through.the.world
4440 2d 77 69 64 65 2d 77 65 62 20 61 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -wide-web.at....................
4460 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 68 74 74 70 3a 2f 2f 77 77 77 2e 70 68 70 2e 6e 65 74 .......|.//.|.http://www.php.net
4480 2f 6c 69 63 65 6e 73 65 2f 32 5f 30 32 2e 74 78 74 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 /license/2_02.txt...............
44a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 49 66 20 79 6f 75 ...................|.//.|.If.you
44c0 20 64 69 64 20 6e 6f 74 20 72 65 63 65 69 76 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 50 .did.not.receive.a.copy.of.the.P
44e0 48 50 20 6c 69 63 65 6e 73 65 20 61 6e 64 20 61 72 65 20 75 6e 61 62 6c 65 20 74 6f 20 20 20 7c HP.license.and.are.unable.to...|
4500 0a 2f 2f 20 7c 20 6f 62 74 61 69 6e 20 69 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 77 6f 72 6c .//.|.obtain.it.through.the.worl
4520 64 2d 77 69 64 65 2d 77 65 62 2c 20 70 6c 65 61 73 65 20 73 65 6e 64 20 61 20 6e 6f 74 65 20 74 d-wide-web,.please.send.a.note.t
4540 6f 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 6c 69 63 65 6e 73 65 40 70 68 70 2e 6e 65 o..........|.//.|.license@php.ne
4560 74 20 73 6f 20 77 65 20 63 61 6e 20 6d 61 69 6c 20 79 6f 75 20 61 20 63 6f 70 79 20 69 6d 6d 65 t.so.we.can.mail.you.a.copy.imme
4580 64 69 61 74 65 6c 79 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d diately................|.//.+---
45a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
45c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
45e0 2d 2d 2d 2b 0a 2f 2f 20 7c 20 41 75 74 68 6f 72 3a 20 43 68 75 63 6b 20 48 61 67 65 6e 62 75 63 ---+.//.|.Author:.Chuck.Hagenbuc
4600 68 20 3c 63 68 75 63 6b 40 68 6f 72 64 65 2e 6f 72 67 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 h.<chuck@horde.org>.............
4620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...............|.//.+-----------
4640 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
4660 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 0a 72 65 ---------------------------+..re
4680 71 75 69 72 65 5f 6f 6e 63 65 20 27 4d 61 69 6c 2e 70 68 70 27 3b 0a 0a 2f 2a 2a 0a 20 2a 20 53 quire_once.'Mail.php';../**..*.S
46a0 65 6e 64 6d 61 69 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 50 45 endmail.implementation.of.the.PE
46c0 41 52 20 4d 61 69 6c 3a 3a 20 69 6e 74 65 72 66 61 63 65 2e 0a 20 2a 20 40 61 63 63 65 73 73 20 AR.Mail::.interface...*.@access.
46e0 70 75 62 6c 69 63 0a 20 2a 20 40 70 61 63 6b 61 67 65 20 4d 61 69 6c 0a 20 2a 20 40 76 65 72 73 public..*.@package.Mail..*.@vers
4700 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e 33 20 24 0a 20 2a 2f 0a 63 6c 61 73 73 20 4d ion.$Revision:.1.3.$..*/.class.M
4720 61 69 6c 5f 73 65 6e 64 6d 61 69 6c 20 65 78 74 65 6e 64 73 20 4d 61 69 6c 20 7b 0a 20 20 20 20 ail_sendmail.extends.Mail.{.....
4740 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 ../**......*.The.location.of.the
4760 20 73 65 6e 64 6d 61 69 6c 20 6f 72 20 73 65 6e 64 6d 61 69 6c 20 77 72 61 70 70 65 72 20 62 69 .sendmail.or.sendmail.wrapper.bi
4780 6e 61 72 79 20 6f 6e 20 74 68 65 0a 20 20 20 20 20 2a 20 66 69 6c 65 73 79 73 74 65 6d 2e 0a 20 nary.on.the......*.filesystem...
47a0 20 20 20 20 2a 20 40 76 61 72 20 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 ....*.@var.string......*/.....va
47c0 72 20 24 73 65 6e 64 6d 61 69 6c 5f 70 61 74 68 20 3d 20 27 2f 75 73 72 2f 73 62 69 6e 2f 73 65 r.$sendmail_path.=.'/usr/sbin/se
47e0 6e 64 6d 61 69 6c 27 3b 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 41 6e 79 20 65 78 ndmail';......./**......*.Any.ex
4800 74 72 61 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 70 tra.command-line.parameters.to.p
4820 61 73 73 20 74 6f 20 74 68 65 20 73 65 6e 64 6d 61 69 6c 20 6f 72 0a 20 20 20 20 20 2a 20 73 65 ass.to.the.sendmail.or......*.se
4840 6e 64 6d 61 69 6c 20 77 72 61 70 70 65 72 20 62 69 6e 61 72 79 2e 0a 20 20 20 20 20 2a 20 40 76 ndmail.wrapper.binary.......*.@v
4860 61 72 20 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 73 65 6e 64 6d ar.string......*/.....var.$sendm
4880 61 69 6c 5f 61 72 67 73 20 3d 20 27 27 3b 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 ail_args.=.'';......./**......*.
48a0 43 6f 6e 73 74 72 75 63 74 6f 72 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 49 6e 73 74 Constructor.......*.......*.Inst
48c0 61 6e 74 69 61 74 65 73 20 61 20 6e 65 77 20 4d 61 69 6c 5f 73 65 6e 64 6d 61 69 6c 3a 3a 20 6f antiates.a.new.Mail_sendmail::.o
48e0 62 6a 65 63 74 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 0a 20 20 bject.based.on.the.parameters...
4900 20 20 20 2a 20 70 61 73 73 65 64 20 69 6e 2e 20 49 74 20 6c 6f 6f 6b 73 20 66 6f 72 20 74 68 65 ...*.passed.in..It.looks.for.the
4920 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73 3a 0a 20 20 20 20 20 2a 20 20 20 .following.parameters:......*...
4940 20 20 73 65 6e 64 6d 61 69 6c 5f 70 61 74 68 20 20 20 20 54 68 65 20 6c 6f 63 61 74 69 6f 6e 20 ..sendmail_path....The.location.
4960 6f 66 20 74 68 65 20 73 65 6e 64 6d 61 69 6c 20 62 69 6e 61 72 79 20 6f 6e 20 74 68 65 0a 20 20 of.the.sendmail.binary.on.the...
4980 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 73 79 ...*......................filesy
49a0 73 74 65 6d 2e 20 44 65 66 61 75 6c 74 73 20 74 6f 20 27 2f 75 73 72 2f 73 62 69 6e 2f 73 65 6e stem..Defaults.to.'/usr/sbin/sen
49c0 64 6d 61 69 6c 27 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 20 20 20 20 73 65 6e 64 6d 61 dmail'.......*......*.....sendma
49e0 69 6c 5f 61 72 67 73 20 20 20 20 41 6e 79 20 65 78 74 72 61 20 70 61 72 61 6d 65 74 65 72 73 20 il_args....Any.extra.parameters.
4a00 74 6f 20 70 61 73 73 20 74 6f 20 74 68 65 20 73 65 6e 64 6d 61 69 6c 0a 20 20 20 20 20 2a 20 20 to.pass.to.the.sendmail......*..
4a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 20 73 65 6e 64 6d 61 69 6c 20 ....................or.sendmail.
4a40 77 72 61 70 70 65 72 20 62 69 6e 61 72 79 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 49 66 wrapper.binary.......*......*.If
4a60 20 61 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20 24 .a.parameter.is.present.in.the.$
4a80 70 61 72 61 6d 73 20 61 72 72 61 79 2c 20 69 74 20 72 65 70 6c 61 63 65 73 20 74 68 65 0a 20 20 params.array,.it.replaces.the...
4aa0 20 20 20 2a 20 64 65 66 61 75 6c 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 ...*.default.......*......*.@par
4ac0 61 6d 20 61 72 72 61 79 20 24 70 61 72 61 6d 73 20 48 61 73 68 20 63 6f 6e 74 61 69 6e 69 6e 67 am.array.$params.Hash.containing
4ae0 20 61 6e 79 20 70 61 72 61 6d 65 74 65 72 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 74 .any.parameters.different.from.t
4b00 68 65 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 73 2e he......*..............defaults.
4b20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 2f 09 0a ......*.@access.public......*/..
4b40 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 4d 61 69 6c 5f 73 65 6e 64 6d 61 69 6c 28 24 70 61 72 61 ....function.Mail_sendmail($para
4b60 6d 73 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 70 61 72 ms).....{.........if.(isset($par
4b80 61 6d 73 5b 27 73 65 6e 64 6d 61 69 6c 5f 70 61 74 68 27 5d 29 29 20 24 74 68 69 73 2d 3e 73 65 ams['sendmail_path'])).$this->se
4ba0 6e 64 6d 61 69 6c 5f 70 61 74 68 20 3d 20 24 70 61 72 61 6d 73 5b 27 73 65 6e 64 6d 61 69 6c 5f ndmail_path.=.$params['sendmail_
4bc0 70 61 74 68 27 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 70 61 72 61 6d path'];.........if.(isset($param
4be0 73 5b 27 73 65 6e 64 6d 61 69 6c 5f 61 72 67 73 27 5d 29 29 20 24 74 68 69 73 2d 3e 73 65 6e 64 s['sendmail_args'])).$this->send
4c00 6d 61 69 6c 5f 61 72 67 73 20 3d 20 24 70 61 72 61 6d 73 5b 27 73 65 6e 64 6d 61 69 6c 5f 61 72 mail_args.=.$params['sendmail_ar
4c20 67 73 27 5d 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 20 20 20 2a 20 42 65 63 gs'];........../*..........*.Bec
4c40 61 75 73 65 20 77 65 20 6e 65 65 64 20 74 6f 20 70 61 73 73 20 6d 65 73 73 61 67 65 20 68 65 61 ause.we.need.to.pass.message.hea
4c60 64 65 72 73 20 74 6f 20 74 68 65 20 73 65 6e 64 6d 61 69 6c 20 70 72 6f 67 72 61 6d 20 6f 6e 0a ders.to.the.sendmail.program.on.
4c80 20 20 20 20 20 20 20 20 20 2a 20 74 68 65 20 63 6f 6d 6d 61 6e 64 6c 69 6e 65 2c 20 77 65 20 63 .........*.the.commandline,.we.c
4ca0 61 6e 27 74 20 67 75 61 72 61 6e 74 65 65 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20 73 74 an't.guarantee.the.use.of.the.st
4cc0 61 6e 64 61 72 64 20 22 5c 72 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 2a 20 73 65 70 61 72 61 74 andard."\r\n"..........*.separat
4ce0 6f 72 2e 20 20 49 6e 73 74 65 61 64 2c 20 77 65 20 75 73 65 20 74 68 65 20 73 79 73 74 65 6d 27 or...Instead,.we.use.the.system'
4d00 73 20 6e 61 74 69 76 65 20 6c 69 6e 65 20 73 65 70 61 72 61 74 6f 72 2e 0a 20 20 20 20 20 20 20 s.native.line.separator.........
4d20 20 20 2a 2f 0a 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 73 65 70 20 3d 20 4f 53 5f 57 49 4e ..*/.........$this->sep.=.OS_WIN
4d40 44 4f 57 53 20 3f 20 22 5c 72 5c 6e 22 20 3a 20 22 5c 6e 22 3b 0a 20 20 20 20 7d 0a 20 20 20 20 DOWS.?."\r\n".:."\n";.....}.....
4d60 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 73 20 4d 61 69 6c 3a 3a 73 65 ../**......*.Implements.Mail::se
4d80 6e 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 73 65 6e 64 6d 61 69 6c nd().function.using.the.sendmail
4da0 0a 20 20 20 20 20 2a 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 62 69 6e 61 72 79 2e 0a 20 20 20 ......*.command-line.binary.....
4dc0 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d 69 78 65 64 20 24 72 65 63 69 70 69 ..*.......*.@param.mixed.$recipi
4de0 65 6e 74 73 20 45 69 74 68 65 72 20 61 20 63 6f 6d 6d 61 2d 73 65 70 65 72 61 74 65 64 20 6c 69 ents.Either.a.comma-seperated.li
4e00 73 74 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 st.of.recipients......*.........
4e20 20 20 20 20 20 28 52 46 43 38 32 32 20 63 6f 6d 70 6c 69 61 6e 74 29 2c 20 6f 72 20 61 6e 20 61 .....(RFC822.compliant),.or.an.a
4e40 72 72 61 79 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 2c 0a 20 20 20 20 20 2a 20 20 20 20 20 20 rray.of.recipients,......*......
4e60 20 20 20 20 20 20 20 20 65 61 63 68 20 52 46 43 38 32 32 20 76 61 6c 69 64 2e 20 54 68 69 73 20 ........each.RFC822.valid..This.
4e80 6d 61 79 20 63 6f 6e 74 61 69 6e 20 72 65 63 69 70 69 65 6e 74 73 20 6e 6f 74 0a 20 20 20 20 20 may.contain.recipients.not......
4ea0 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 *..............specified.in.the.
4ec0 68 65 61 64 65 72 73 2c 20 66 6f 72 20 42 63 63 3a 2c 20 72 65 73 65 6e 64 69 6e 67 0a 20 20 20 headers,.for.Bcc:,.resending....
4ee0 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 73 2c 20 65 74 63 2e 0a ..*..............messages,.etc..
4f00 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 68 65 61 64 .....*......*.@param.array.$head
4f20 65 72 73 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 ers.The.array.of.headers.to.send
4f40 20 77 69 74 68 20 74 68 65 20 6d 61 69 6c 2c 20 69 6e 20 61 6e 0a 20 20 20 20 20 2a 20 20 20 20 .with.the.mail,.in.an......*....
4f60 20 20 20 20 20 20 20 20 20 20 61 73 73 6f 63 69 61 74 69 76 65 20 61 72 72 61 79 2c 20 77 68 65 ..........associative.array,.whe
4f80 72 65 20 74 68 65 20 61 72 72 61 79 20 6b 65 79 20 69 73 20 74 68 65 0a 20 20 20 20 20 2a 20 20 re.the.array.key.is.the......*..
4fa0 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 20 6e 61 6d 65 20 28 69 65 2c 20 27 53 75 ............header.name.(ie,.'Su
4fc0 62 6a 65 63 74 27 29 2c 20 61 6e 64 20 74 68 65 20 61 72 72 61 79 20 76 61 6c 75 65 0a 20 20 20 bject'),.and.the.array.value....
4fe0 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 20 74 68 65 20 68 65 61 64 65 72 20 76 ..*..............is.the.header.v
5000 61 6c 75 65 20 28 69 65 2c 20 27 74 65 73 74 27 29 2e 20 54 68 65 20 68 65 61 64 65 72 0a 20 20 alue.(ie,.'test')..The.header...
5020 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 64 75 63 65 64 20 66 72 6f 6d 20 ...*..............produced.from.
5040 74 68 6f 73 65 20 76 61 6c 75 65 73 20 77 6f 75 6c 64 20 62 65 20 27 53 75 62 6a 65 63 74 3a 0a those.values.would.be.'Subject:.
5060 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 73 74 27 2e 0a 20 20 20 20 20 .....*..............test'.......
5080 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 62 6f 64 79 20 54 68 65 *......*.@param.string.$body.The
50a0 20 66 75 6c 6c 20 74 65 78 74 20 6f 66 20 74 68 65 20 6d 65 73 73 61 67 65 20 62 6f 64 79 2c 20 .full.text.of.the.message.body,.
50c0 69 6e 63 6c 75 64 69 6e 67 20 61 6e 79 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 including.any......*............
50e0 20 20 20 4d 69 6d 65 20 70 61 72 74 73 2c 20 65 74 63 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 ...Mime.parts,.etc.......*......
5100 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 6f 6e 20 *.@return.mixed.Returns.true.on.
5120 73 75 63 63 65 73 73 2c 20 6f 72 20 61 20 50 45 41 52 5f 45 72 72 6f 72 0a 20 20 20 20 20 2a 20 success,.or.a.PEAR_Error......*.
5140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 64 65 73 63 72 ..............containing.a.descr
5160 69 70 74 69 76 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 6f 6e 0a 20 20 20 20 20 2a 20 20 iptive.error.message.on......*..
5180 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 2a 20 40 61 63 .............failure.......*.@ac
51a0 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 2f 09 0a 20 20 20 20 66 75 6e 63 74 69 6f cess.public......*/......functio
51c0 6e 20 73 65 6e 64 28 24 72 65 63 69 70 69 65 6e 74 73 2c 20 24 68 65 61 64 65 72 73 2c 20 24 62 n.send($recipients,.$headers,.$b
51e0 6f 64 79 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 72 65 63 69 70 69 65 6e 74 73 20 3d ody).....{.........$recipients.=
5200 20 65 73 63 61 70 65 53 68 65 6c 6c 43 6d 64 28 69 6d 70 6c 6f 64 65 28 27 20 27 2c 20 24 74 68 .escapeShellCmd(implode('.',.$th
5220 69 73 2d 3e 70 61 72 73 65 52 65 63 69 70 69 65 6e 74 73 28 24 72 65 63 69 70 69 65 6e 74 73 29 is->parseRecipients($recipients)
5240 29 29 3b 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 69 73 74 28 24 66 72 6f 6d 2c ));..................list($from,
5260 20 24 74 65 78 74 5f 68 65 61 64 65 72 73 29 20 3d 20 24 74 68 69 73 2d 3e 70 72 65 70 61 72 65 .$text_headers).=.$this->prepare
5280 48 65 61 64 65 72 73 28 24 68 65 61 64 65 72 73 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 Headers($headers);.........if.(!
52a0 69 73 73 65 74 28 24 66 72 6f 6d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 isset($from)).{.............retu
52c0 72 6e 20 6e 65 77 20 50 45 41 52 5f 45 72 72 6f 72 28 27 4e 6f 20 66 72 6f 6d 20 61 64 64 72 65 rn.new.PEAR_Error('No.from.addre
52e0 73 73 20 67 69 76 65 6e 2e 27 29 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20 28 73 ss.given.');.........}.elseif.(s
5300 74 72 73 74 72 28 24 66 72 6f 6d 2c 20 27 20 27 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 trstr($from,.'.').||............
5320 20 20 20 20 20 20 20 73 74 72 73 74 72 28 24 66 72 6f 6d 2c 20 27 3b 27 29 20 7c 7c 0a 20 20 20 .......strstr($from,.';').||....
5340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 73 74 72 28 24 66 72 6f 6d 2c 20 27 26 27 ...............strstr($from,.'&'
5360 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 73 74 72 28 24 66 ).||...................strstr($f
5380 72 6f 6d 2c 20 27 60 27 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 rom,.'`')).{.............return.
53a0 6e 65 77 20 50 45 41 52 5f 45 72 72 6f 72 28 27 46 72 6f 6d 20 61 64 64 72 65 73 73 20 73 70 65 new.PEAR_Error('From.address.spe
53c0 63 69 66 69 65 64 20 77 69 74 68 20 64 61 6e 67 65 72 6f 75 73 20 63 68 61 72 61 63 74 65 72 73 cified.with.dangerous.characters
53e0 2e 27 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 .');.........}..................
5400 24 72 65 73 75 6c 74 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 40 69 73 5f 65 78 65 $result.=.0;.........if.(@is_exe
5420 63 75 74 61 62 6c 65 28 24 74 68 69 73 2d 3e 73 65 6e 64 6d 61 69 6c 5f 70 61 74 68 29 29 20 7b cutable($this->sendmail_path)).{
5440 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 66 72 6f 6d 20 3d 20 65 73 63 61 70 65 53 68 65 6c 6c .............$from.=.escapeShell
5460 43 6d 64 28 24 66 72 6f 6d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6d 61 69 6c 20 3d 20 Cmd($from);.............$mail.=.
5480 70 6f 70 65 6e 28 24 74 68 69 73 2d 3e 73 65 6e 64 6d 61 69 6c 5f 70 61 74 68 20 2e 20 28 21 65 popen($this->sendmail_path...(!e
54a0 6d 70 74 79 28 24 74 68 69 73 2d 3e 73 65 6e 64 6d 61 69 6c 5f 61 72 67 73 29 20 3f 20 27 20 27 mpty($this->sendmail_args).?.'.'
54c0 20 2e 20 24 74 68 69 73 2d 3e 73 65 6e 64 6d 61 69 6c 5f 61 72 67 73 20 3a 20 27 27 29 20 2e 20 ...$this->sendmail_args.:.'')...
54e0 22 20 2d 66 24 66 72 6f 6d 20 2d 2d 20 24 72 65 63 69 70 69 65 6e 74 73 22 2c 20 27 77 27 29 3b ".-f$from.--.$recipients",.'w');
5500 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 75 74 73 28 24 6d 61 69 6c 2c 20 24 74 65 78 74 5f .............fputs($mail,.$text_
5520 68 65 61 64 65 72 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 75 74 73 28 24 6d 61 69 headers);.............fputs($mai
5540 6c 2c 20 24 74 68 69 73 2d 3e 73 65 70 29 3b 20 20 2f 2f 20 6e 65 77 6c 69 6e 65 20 74 6f 20 65 l,.$this->sep);..//.newline.to.e
5560 6e 64 20 74 68 65 20 68 65 61 64 65 72 73 20 73 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 nd.the.headers.section..........
5580 20 20 20 66 70 75 74 73 28 24 6d 61 69 6c 2c 20 24 62 6f 64 79 29 3b 0a 20 20 20 20 20 20 20 20 ...fputs($mail,.$body);.........
55a0 20 20 20 20 24 72 65 73 75 6c 74 20 3d 20 70 63 6c 6f 73 65 28 24 6d 61 69 6c 29 20 3e 3e 20 38 ....$result.=.pclose($mail).>>.8
55c0 20 26 20 30 78 46 46 3b 20 2f 2f 20 6e 65 65 64 20 74 6f 20 73 68 69 66 74 20 74 68 65 20 70 63 .&.0xFF;.//.need.to.shift.the.pc
55e0 6c 6f 73 65 20 72 65 73 75 6c 74 20 74 6f 20 67 65 74 20 74 68 65 20 65 78 69 74 20 63 6f 64 65 lose.result.to.get.the.exit.code
5600 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .........}.else.{.............re
5620 74 75 72 6e 20 6e 65 77 20 50 45 41 52 5f 45 72 72 6f 72 28 27 73 65 6e 64 6d 61 69 6c 20 5b 27 turn.new.PEAR_Error('sendmail.['
5640 20 2e 20 24 74 68 69 73 2d 3e 73 65 6e 64 6d 61 69 6c 5f 70 61 74 68 20 2e 20 27 5d 20 6e 6f 74 ...$this->sendmail_path...'].not
5660 20 65 78 65 63 75 74 61 62 6c 65 27 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 .executable');.........}........
5680 20 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 72 65 73 75 6c 74 20 21 3d 20 30 29 20 7b 0a 20 20 ..........if.($result.!=.0).{...
56a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 50 45 41 52 5f 45 72 72 6f 72 28 ..........return.new.PEAR_Error(
56c0 27 73 65 6e 64 6d 61 69 6c 20 72 65 74 75 72 6e 65 64 20 65 72 72 6f 72 20 63 6f 64 65 20 27 20 'sendmail.returned.error.code.'.
56e0 2e 20 24 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 ..$result);.........}...........
5700 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a 7d .......return.true;.....}......}
5720 0a 3f 3e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .?>.............................
5740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5800 4d 61 69 6c 2d 31 2e 31 2e 30 2f 4d 61 69 6c 2f 73 6d 74 70 2e 70 68 70 00 00 00 00 00 00 00 00 Mail-1.1.0/Mail/smtp.php........
5820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5860 00 00 00 00 31 30 30 36 34 34 20 00 20 20 31 37 35 30 20 00 20 20 31 37 35 30 20 00 20 20 20 20 ....100644....1750....1750......
5880 20 20 31 34 31 34 35 20 20 37 36 34 33 30 35 33 33 31 33 20 20 31 30 32 30 34 20 00 00 00 00 00 ..14145..7643053313..10204......
58a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5a00 3c 3f 70 68 70 0a 2f 2f 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d <?php.//.//.+-------------------
5a20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5a40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 50 48 50 20 56 65 -------------------+.//.|.PHP.Ve
5a60 72 73 69 6f 6e 20 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rsion.4.........................
5a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c ...............................|
5aa0 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .//.+---------------------------
5ac0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5ae0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 -----------+.//.|.Copyright.(c).
5b00 31 39 39 37 2d 32 30 30 33 20 54 68 65 20 50 48 50 20 47 72 6f 75 70 20 20 20 20 20 20 20 20 20 1997-2003.The.PHP.Group.........
5b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d .......................|.//.+---
5b40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5b60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5b80 2d 2d 2d 2b 0a 2f 2f 20 7c 20 54 68 69 73 20 73 6f 75 72 63 65 20 66 69 6c 65 20 69 73 20 73 75 ---+.//.|.This.source.file.is.su
5ba0 62 6a 65 63 74 20 74 6f 20 76 65 72 73 69 6f 6e 20 32 2e 30 32 20 6f 66 20 74 68 65 20 50 48 50 bject.to.version.2.02.of.the.PHP
5bc0 20 6c 69 63 65 6e 73 65 2c 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 74 68 61 74 20 69 73 20 62 75 .license,......|.//.|.that.is.bu
5be0 6e 64 6c 65 64 20 77 69 74 68 20 74 68 69 73 20 70 61 63 6b 61 67 65 20 69 6e 20 74 68 65 20 66 ndled.with.this.package.in.the.f
5c00 69 6c 65 20 4c 49 43 45 4e 53 45 2c 20 61 6e 64 20 69 73 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 ile.LICENSE,.and.is........|.//.
5c20 7c 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 77 6f 72 6c 64 |.available.at.through.the.world
5c40 2d 77 69 64 65 2d 77 65 62 20 61 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -wide-web.at....................
5c60 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 68 74 74 70 3a 2f 2f 77 77 77 2e 70 68 70 2e 6e 65 74 .......|.//.|.http://www.php.net
5c80 2f 6c 69 63 65 6e 73 65 2f 32 5f 30 32 2e 74 78 74 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 /license/2_02.txt...............
5ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 49 66 20 79 6f 75 ...................|.//.|.If.you
5cc0 20 64 69 64 20 6e 6f 74 20 72 65 63 65 69 76 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 50 .did.not.receive.a.copy.of.the.P
5ce0 48 50 20 6c 69 63 65 6e 73 65 20 61 6e 64 20 61 72 65 20 75 6e 61 62 6c 65 20 74 6f 20 20 20 7c HP.license.and.are.unable.to...|
5d00 0a 2f 2f 20 7c 20 6f 62 74 61 69 6e 20 69 74 20 74 68 72 6f 75 67 68 20 74 68 65 20 77 6f 72 6c .//.|.obtain.it.through.the.worl
5d20 64 2d 77 69 64 65 2d 77 65 62 2c 20 70 6c 65 61 73 65 20 73 65 6e 64 20 61 20 6e 6f 74 65 20 74 d-wide-web,.please.send.a.note.t
5d40 6f 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 6c 69 63 65 6e 73 65 40 70 68 70 2e 6e 65 o..........|.//.|.license@php.ne
5d60 74 20 73 6f 20 77 65 20 63 61 6e 20 6d 61 69 6c 20 79 6f 75 20 61 20 63 6f 70 79 20 69 6d 6d 65 t.so.we.can.mail.you.a.copy.imme
5d80 64 69 61 74 65 6c 79 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d diately................|.//.+---
5da0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5dc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5de0 2d 2d 2d 2b 0a 2f 2f 20 7c 20 41 75 74 68 6f 72 73 3a 20 43 68 75 63 6b 20 48 61 67 65 6e 62 75 ---+.//.|.Authors:.Chuck.Hagenbu
5e00 63 68 20 3c 63 68 75 63 6b 40 68 6f 72 64 65 2e 6f 72 67 3e 20 20 20 20 20 20 20 20 20 20 20 20 ch.<chuck@horde.org>............
5e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 20 20 20 20 20 20 20 20 20 4a ...............|.//.|..........J
5e40 6f 6e 20 50 61 72 69 73 65 20 3c 6a 6f 6e 40 70 68 70 2e 6e 65 74 3e 20 20 20 20 20 20 20 20 20 on.Parise.<jon@php.net>.........
5e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 ...........................|.//.
5e80 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d +-------------------------------
5ea0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5ec0 2d 2d 2d 2d 2d 2d 2d 2b 0a 0a 72 65 71 75 69 72 65 5f 6f 6e 63 65 20 27 4d 61 69 6c 2e 70 68 70 -------+..require_once.'Mail.php
5ee0 27 3b 0a 0a 2f 2a 2a 0a 20 2a 20 53 4d 54 50 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f ';../**..*.SMTP.implementation.o
5f00 66 20 74 68 65 20 50 45 41 52 20 4d 61 69 6c 3a 3a 20 69 6e 74 65 72 66 61 63 65 2e 20 52 65 71 f.the.PEAR.Mail::.interface..Req
5f20 75 69 72 65 73 20 74 68 65 20 50 45 41 52 0a 20 2a 20 4e 65 74 5f 53 4d 54 50 3a 3a 20 63 6c 61 uires.the.PEAR..*.Net_SMTP::.cla
5f40 73 73 2e 0a 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 2a 20 40 70 61 63 6b 61 67 ss...*.@access.public..*.@packag
5f60 65 20 4d 61 69 6c 0a 20 2a 20 40 76 65 72 73 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e e.Mail..*.@version.$Revision:.1.
5f80 31 30 20 24 0a 20 2a 2f 0a 63 6c 61 73 73 20 4d 61 69 6c 5f 73 6d 74 70 20 65 78 74 65 6e 64 73 10.$..*/.class.Mail_smtp.extends
5fa0 20 4d 61 69 6c 20 7b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 53 4d 54 50 .Mail.{....../**......*.The.SMTP
5fc0 20 68 6f 73 74 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 .host.to.connect.to.......*.@var
5fe0 20 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 68 6f 73 74 20 3d 20 .string......*/.....var.$host.=.
6000 27 6c 6f 63 61 6c 68 6f 73 74 27 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 'localhost';....../**......*.The
6020 20 70 6f 72 74 20 74 68 65 20 53 4d 54 50 20 73 65 72 76 65 72 20 69 73 20 6f 6e 2e 0a 20 20 20 .port.the.SMTP.server.is.on.....
6040 20 20 2a 20 40 76 61 72 20 69 6e 74 65 67 65 72 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 ..*.@var.integer......*/.....var
6060 20 24 70 6f 72 74 20 3d 20 32 35 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 68 6f .$port.=.25;....../**......*.Sho
6080 75 6c 64 20 53 4d 54 50 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 62 65 20 75 73 65 64 3f uld.SMTP.authentication.be.used?
60a0 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 54 68 69 73 20 76 61 6c 75 65 20 6d 61 79 20 62 65 ......*......*.This.value.may.be
60c0 20 73 65 74 20 74 6f 20 74 72 75 65 2c 20 66 61 6c 73 65 20 6f 72 20 74 68 65 20 6e 61 6d 65 20 .set.to.true,.false.or.the.name.
60e0 6f 66 20 61 20 73 70 65 63 69 66 69 63 0a 20 20 20 20 20 2a 20 61 75 74 68 65 6e 74 69 63 61 74 of.a.specific......*.authenticat
6100 69 6f 6e 20 6d 65 74 68 6f 64 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 49 66 20 74 68 65 ion.method.......*......*.If.the
6120 20 76 61 6c 75 65 20 69 73 20 73 65 74 20 74 6f 20 74 72 75 65 2c 20 74 68 65 20 4e 65 74 5f 53 .value.is.set.to.true,.the.Net_S
6140 4d 54 50 20 70 61 63 6b 61 67 65 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 0a MTP.package.will.attempt.to.use.
6160 20 20 20 20 20 2a 20 74 68 65 20 62 65 73 74 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 6d .....*.the.best.authentication.m
6180 65 74 68 6f 64 20 61 64 76 65 72 74 69 73 65 64 20 62 79 20 74 68 65 20 72 65 6d 6f 74 65 20 53 ethod.advertised.by.the.remote.S
61a0 4d 54 50 20 73 65 72 76 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 76 61 72 20 6d MTP.server.......*......*.@var.m
61c0 69 78 65 64 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 61 75 74 68 20 3d 20 66 61 6c ixed......*/.....var.$auth.=.fal
61e0 73 65 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 75 73 65 72 6e 61 6d 65 se;....../**......*.The.username
6200 20 74 6f 20 75 73 65 20 69 66 20 74 68 65 20 53 4d 54 50 20 73 65 72 76 65 72 20 72 65 71 75 69 .to.use.if.the.SMTP.server.requi
6220 72 65 73 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 20 res.authentication.......*.@var.
6240 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 75 73 65 72 6e 61 6d 65 string......*/.....var.$username
6260 20 3d 20 27 27 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 70 61 73 73 77 .=.'';....../**......*.The.passw
6280 6f 72 64 20 74 6f 20 75 73 65 20 69 66 20 74 68 65 20 53 4d 54 50 20 73 65 72 76 65 72 20 72 65 ord.to.use.if.the.SMTP.server.re
62a0 71 75 69 72 65 73 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2e 0a 20 20 20 20 20 2a 20 40 76 quires.authentication.......*.@v
62c0 61 72 20 73 74 72 69 6e 67 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 70 61 73 73 77 ar.string......*/.....var.$passw
62e0 6f 72 64 20 3d 20 27 27 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 6f 6e 73 74 72 ord.=.'';....../**......*.Constr
6300 75 63 74 6f 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 49 6e 73 74 61 6e 74 69 61 74 65 uctor.......*......*.Instantiate
6320 73 20 61 20 6e 65 77 20 4d 61 69 6c 5f 73 6d 74 70 3a 3a 20 6f 62 6a 65 63 74 20 62 61 73 65 64 s.a.new.Mail_smtp::.object.based
6340 20 6f 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 2a 20 70 61 73 73 65 64 .on.the.parameters......*.passed
6360 20 69 6e 2e 20 49 74 20 6c 6f 6f 6b 73 20 66 6f 72 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 .in..It.looks.for.the.following.
6380 70 61 72 61 6d 65 74 65 72 73 3a 0a 20 20 20 20 20 2a 20 20 20 20 20 68 6f 73 74 20 20 20 20 20 parameters:......*.....host.....
63a0 20 20 20 54 68 65 20 73 65 72 76 65 72 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f 2e 20 44 65 66 ...The.server.to.connect.to..Def
63c0 61 75 6c 74 73 20 74 6f 20 6c 6f 63 61 6c 68 6f 73 74 2e 0a 20 20 20 20 20 2a 20 20 20 20 20 70 aults.to.localhost.......*.....p
63e0 6f 72 74 20 20 20 20 20 20 20 20 54 68 65 20 70 6f 72 74 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 ort........The.port.to.connect.t
6400 6f 2e 20 44 65 66 61 75 6c 74 73 20 74 6f 20 32 35 2e 0a 20 20 20 20 20 2a 20 20 20 20 20 61 75 o..Defaults.to.25.......*.....au
6420 74 68 20 20 20 20 20 20 20 20 53 4d 54 50 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2e 20 20 th........SMTP.authentication...
6440 44 65 66 61 75 6c 74 73 20 74 6f 20 6e 6f 6e 65 2e 0a 20 20 20 20 20 2a 20 20 20 20 20 75 73 65 Defaults.to.none.......*.....use
6460 72 6e 61 6d 65 20 20 20 20 54 68 65 20 75 73 65 72 6e 61 6d 65 20 74 6f 20 75 73 65 20 66 6f 72 rname....The.username.to.use.for
6480 20 53 4d 54 50 20 61 75 74 68 2e 20 4e 6f 20 64 65 66 61 75 6c 74 2e 0a 20 20 20 20 20 2a 20 20 .SMTP.auth..No.default.......*..
64a0 20 20 20 70 61 73 73 77 6f 72 64 20 20 20 20 54 68 65 20 70 61 73 73 77 6f 72 64 20 74 6f 20 75 ...password....The.password.to.u
64c0 73 65 20 66 6f 72 20 53 4d 54 50 20 61 75 74 68 2e 20 4e 6f 20 64 65 66 61 75 6c 74 2e 0a 20 20 se.for.SMTP.auth..No.default....
64e0 20 20 20 2a 0a 20 20 20 20 20 2a 20 49 66 20 61 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 70 72 ...*......*.If.a.parameter.is.pr
6500 65 73 65 6e 74 20 69 6e 20 74 68 65 20 24 70 61 72 61 6d 73 20 61 72 72 61 79 2c 20 69 74 20 72 esent.in.the.$params.array,.it.r
6520 65 70 6c 61 63 65 73 20 74 68 65 0a 20 20 20 20 20 2a 20 64 65 66 61 75 6c 74 2e 0a 20 20 20 20 eplaces.the......*.default......
6540 20 2a 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 48 61 73 68 20 63 6f 6e 74 .*......*.@param.array.Hash.cont
6560 61 69 6e 69 6e 67 20 61 6e 79 20 70 61 72 61 6d 65 74 65 72 73 20 64 69 66 66 65 72 65 6e 74 20 aining.any.parameters.different.
6580 66 72 6f 6d 20 74 68 65 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 from.the......*..............def
65a0 61 75 6c 74 73 2e 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 aults.......*.@access.public....
65c0 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 4d 61 69 6c 5f 73 6d 74 70 28 24 70 61 72 ..*/.....function.Mail_smtp($par
65e0 61 6d 73 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 70 61 ams).....{.........if.(isset($pa
6600 72 61 6d 73 5b 27 68 6f 73 74 27 5d 29 29 20 24 74 68 69 73 2d 3e 68 6f 73 74 20 3d 20 24 70 61 rams['host'])).$this->host.=.$pa
6620 72 61 6d 73 5b 27 68 6f 73 74 27 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 rams['host'];.........if.(isset(
6640 24 70 61 72 61 6d 73 5b 27 70 6f 72 74 27 5d 29 29 20 24 74 68 69 73 2d 3e 70 6f 72 74 20 3d 20 $params['port'])).$this->port.=.
6660 24 70 61 72 61 6d 73 5b 27 70 6f 72 74 27 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 $params['port'];.........if.(iss
6680 65 74 28 24 70 61 72 61 6d 73 5b 27 61 75 74 68 27 5d 29 29 20 24 74 68 69 73 2d 3e 61 75 74 68 et($params['auth'])).$this->auth
66a0 20 3d 20 24 70 61 72 61 6d 73 5b 27 61 75 74 68 27 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 .=.$params['auth'];.........if.(
66c0 69 73 73 65 74 28 24 70 61 72 61 6d 73 5b 27 75 73 65 72 6e 61 6d 65 27 5d 29 29 20 24 74 68 69 isset($params['username'])).$thi
66e0 73 2d 3e 75 73 65 72 6e 61 6d 65 20 3d 20 24 70 61 72 61 6d 73 5b 27 75 73 65 72 6e 61 6d 65 27 s->username.=.$params['username'
6700 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 70 61 72 61 6d 73 5b 27 70 61 ];.........if.(isset($params['pa
6720 73 73 77 6f 72 64 27 5d 29 29 20 24 74 68 69 73 2d 3e 70 61 73 73 77 6f 72 64 20 3d 20 24 70 61 ssword'])).$this->password.=.$pa
6740 72 61 6d 73 5b 27 70 61 73 73 77 6f 72 64 27 5d 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a rams['password'];.....}....../**
6760 0a 20 20 20 20 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 73 20 4d 61 69 6c 3a 3a 73 65 6e 64 28 29 20 ......*.Implements.Mail::send().
6780 66 75 6e 63 74 69 6f 6e 20 75 73 69 6e 67 20 53 4d 54 50 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 function.using.SMTP.......*.....
67a0 20 2a 20 40 70 61 72 61 6d 20 6d 69 78 65 64 20 24 72 65 63 69 70 69 65 6e 74 73 20 45 69 74 68 .*.@param.mixed.$recipients.Eith
67c0 65 72 20 61 20 63 6f 6d 6d 61 2d 73 65 70 65 72 61 74 65 64 20 6c 69 73 74 20 6f 66 20 72 65 63 er.a.comma-seperated.list.of.rec
67e0 69 70 69 65 6e 74 73 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 52 46 43 ipients......*..............(RFC
6800 38 32 32 20 63 6f 6d 70 6c 69 61 6e 74 29 2c 20 6f 72 20 61 6e 20 61 72 72 61 79 20 6f 66 20 72 822.compliant),.or.an.array.of.r
6820 65 63 69 70 69 65 6e 74 73 2c 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 ecipients,......*..............e
6840 61 63 68 20 52 46 43 38 32 32 20 76 61 6c 69 64 2e 20 54 68 69 73 20 6d 61 79 20 63 6f 6e 74 61 ach.RFC822.valid..This.may.conta
6860 69 6e 20 72 65 63 69 70 69 65 6e 74 73 20 6e 6f 74 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 in.recipients.not......*........
6880 20 20 20 20 20 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 68 65 61 64 65 72 73 2c 20 ......specified.in.the.headers,.
68a0 66 6f 72 20 42 63 63 3a 2c 20 72 65 73 65 6e 64 69 6e 67 0a 20 20 20 20 20 2a 20 20 20 20 20 20 for.Bcc:,.resending......*......
68c0 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 73 2c 20 65 74 63 2e 0a 20 20 20 20 20 2a 0a 20 20 ........messages,.etc.......*...
68e0 20 20 20 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 68 65 61 64 65 72 73 20 54 68 65 20 61 ...*.@param.array.$headers.The.a
6900 72 72 61 79 20 6f 66 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 74 68 65 rray.of.headers.to.send.with.the
6920 20 6d 61 69 6c 2c 20 69 6e 20 61 6e 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 .mail,.in.an......*.............
6940 20 61 73 73 6f 63 69 61 74 69 76 65 20 61 72 72 61 79 2c 20 77 68 65 72 65 20 74 68 65 20 61 72 .associative.array,.where.the.ar
6960 72 61 79 20 6b 65 79 20 69 73 20 74 68 65 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 ray.key.is.the......*...........
6980 20 20 20 68 65 61 64 65 72 20 6e 61 6d 65 20 28 65 2e 67 2e 2c 20 27 53 75 62 6a 65 63 74 27 29 ...header.name.(e.g.,.'Subject')
69a0 2c 20 61 6e 64 20 74 68 65 20 61 72 72 61 79 20 76 61 6c 75 65 0a 20 20 20 20 20 2a 20 20 20 20 ,.and.the.array.value......*....
69c0 20 20 20 20 20 20 20 20 20 20 69 73 20 74 68 65 20 68 65 61 64 65 72 20 76 61 6c 75 65 20 28 65 ..........is.the.header.value.(e
69e0 2e 67 2e 2c 20 27 74 65 73 74 27 29 2e 20 54 68 65 20 68 65 61 64 65 72 0a 20 20 20 20 20 2a 20 .g.,.'test')..The.header......*.
6a00 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 64 75 63 65 64 20 66 72 6f 6d 20 74 68 6f 73 65 .............produced.from.those
6a20 20 76 61 6c 75 65 73 20 77 6f 75 6c 64 20 62 65 20 27 53 75 62 6a 65 63 74 3a 0a 20 20 20 20 20 .values.would.be.'Subject:......
6a40 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 73 74 27 2e 0a 20 20 20 20 20 2a 0a 20 20 20 *..............test'.......*....
6a60 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 62 6f 64 79 20 54 68 65 20 66 75 6c 6c ..*.@param.string.$body.The.full
6a80 20 74 65 78 74 20 6f 66 20 74 68 65 20 6d 65 73 73 61 67 65 20 62 6f 64 79 2c 20 69 6e 63 6c 75 .text.of.the.message.body,.inclu
6aa0 64 69 6e 67 20 61 6e 79 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 69 ding.any......*...............Mi
6ac0 6d 65 20 70 61 72 74 73 2c 20 65 74 63 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 72 65 me.parts,.etc.......*......*.@re
6ae0 74 75 72 6e 20 6d 69 78 65 64 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 6f 6e 20 73 75 63 63 65 turn.mixed.Returns.true.on.succe
6b00 73 73 2c 20 6f 72 20 61 20 50 45 41 52 5f 45 72 72 6f 72 0a 20 20 20 20 20 2a 20 20 20 20 20 20 ss,.or.a.PEAR_Error......*......
6b20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 20 64 65 73 63 72 69 70 74 69 76 .........containing.a.descriptiv
6b40 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 6f 6e 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 e.error.message.on......*.......
6b60 20 20 20 20 20 20 20 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 ........failure.......*.@access.
6b80 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 6e 64 public......*/.....function.send
6ba0 28 24 72 65 63 69 70 69 65 6e 74 73 2c 20 24 68 65 61 64 65 72 73 2c 20 24 62 6f 64 79 29 0a 20 ($recipients,.$headers,.$body)..
6bc0 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 6e 63 6c 75 64 65 5f 6f 6e 63 65 20 27 4e 65 74 2f 53 ...{.........include_once.'Net/S
6be0 4d 54 50 2e 70 68 70 27 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 28 24 73 6d 74 70 20 3d MTP.php';..........if.(!($smtp.=
6c00 20 6e 65 77 20 4e 65 74 5f 53 4d 54 50 28 24 74 68 69 73 2d 3e 68 6f 73 74 2c 20 24 74 68 69 73 .new.Net_SMTP($this->host,.$this
6c20 2d 3e 70 6f 72 74 29 29 29 20 7b 20 72 65 74 75 72 6e 20 6e 65 77 20 50 45 41 52 5f 45 72 72 6f ->port))).{.return.new.PEAR_Erro
6c40 72 28 27 75 6e 61 62 6c 65 20 74 6f 20 69 6e 73 74 61 6e 74 69 61 74 65 20 4e 65 74 5f 53 4d 54 r('unable.to.instantiate.Net_SMT
6c60 50 20 6f 62 6a 65 63 74 27 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 50 45 41 52 3a 3a P.object');.}.........if.(PEAR::
6c80 69 73 45 72 72 6f 72 28 24 73 6d 74 70 2d 3e 63 6f 6e 6e 65 63 74 28 29 29 29 20 7b 20 72 65 74 isError($smtp->connect())).{.ret
6ca0 75 72 6e 20 6e 65 77 20 50 45 41 52 5f 45 72 72 6f 72 28 27 75 6e 61 62 6c 65 20 74 6f 20 63 6f urn.new.PEAR_Error('unable.to.co
6cc0 6e 6e 65 63 74 20 74 6f 20 73 6d 74 70 20 73 65 72 76 65 72 20 27 20 2e 20 24 74 68 69 73 2d 3e nnect.to.smtp.server.'...$this->
6ce0 68 6f 73 74 20 2e 20 27 3a 27 20 2e 20 24 74 68 69 73 2d 3e 70 6f 72 74 29 3b 20 7d 0a 0a 20 20 host...':'...$this->port);.}....
6d00 20 20 20 20 20 20 69 66 20 28 24 74 68 69 73 2d 3e 61 75 74 68 29 20 7b 0a 20 20 20 20 20 20 20 ......if.($this->auth).{........
6d20 20 20 20 20 20 24 6d 65 74 68 6f 64 20 3d 20 69 73 5f 73 74 72 69 6e 67 28 24 74 68 69 73 2d 3e .....$method.=.is_string($this->
6d40 61 75 74 68 29 20 3f 20 24 74 68 69 73 2d 3e 61 75 74 68 20 3a 20 27 27 3b 0a 0a 20 20 20 20 20 auth).?.$this->auth.:.'';.......
6d60 20 20 20 20 20 20 20 69 66 20 28 50 45 41 52 3a 3a 69 73 45 72 72 6f 72 28 24 73 6d 74 70 2d 3e .......if.(PEAR::isError($smtp->
6d80 61 75 74 68 28 24 74 68 69 73 2d 3e 75 73 65 72 6e 61 6d 65 2c 20 24 74 68 69 73 2d 3e 70 61 73 auth($this->username,.$this->pas
6da0 73 77 6f 72 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sword,..........................
6dc0 20 20 20 20 20 24 6d 65 74 68 6f 64 29 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....$method))).{...............
6de0 20 20 72 65 74 75 72 6e 20 6e 65 77 20 50 45 41 52 5f 45 72 72 6f 72 28 27 75 6e 61 62 6c 65 20 ..return.new.PEAR_Error('unable.
6e00 74 6f 20 61 75 74 68 65 6e 74 69 63 61 74 65 20 74 6f 20 73 6d 74 70 20 73 65 72 76 65 72 27 29 to.authenticate.to.smtp.server')
6e20 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 ;.............}.........}.......
6e40 20 20 20 6c 69 73 74 28 24 66 72 6f 6d 2c 20 24 74 65 78 74 5f 68 65 61 64 65 72 73 29 20 3d 20 ...list($from,.$text_headers).=.
6e60 24 74 68 69 73 2d 3e 70 72 65 70 61 72 65 48 65 61 64 65 72 73 28 24 68 65 61 64 65 72 73 29 3b $this->prepareHeaders($headers);
6e80 0a 0a 20 20 20 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 20 20 20 2a 20 53 69 6e 63 65 20 66 65 ........../*..........*.Since.fe
6ea0 77 20 4d 54 41 73 20 61 72 65 20 67 6f 69 6e 67 20 74 6f 20 61 6c 6c 6f 77 20 74 68 69 73 20 68 w.MTAs.are.going.to.allow.this.h
6ec0 65 61 64 65 72 20 74 6f 20 62 65 20 66 6f 72 67 65 64 20 75 6e 6c 65 73 73 0a 20 20 20 20 20 20 eader.to.be.forged.unless.......
6ee0 20 20 20 2a 20 69 74 27 73 20 69 6e 20 74 68 65 20 4d 41 49 4c 20 46 52 4f 4d 3a 20 65 78 63 68 ...*.it's.in.the.MAIL.FROM:.exch
6f00 61 6e 67 65 2c 20 77 65 27 6c 6c 20 75 73 65 20 52 65 74 75 72 6e 2d 50 61 74 68 20 69 6e 73 74 ange,.we'll.use.Return-Path.inst
6f20 65 61 64 20 6f 66 0a 20 20 20 20 20 20 20 20 20 2a 20 46 72 6f 6d 3a 20 69 66 20 69 74 27 73 20 ead.of..........*.From:.if.it's.
6f40 73 65 74 2e 0a 20 20 20 20 20 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 65 6d set...........*/.........if.(!em
6f60 70 74 79 28 24 68 65 61 64 65 72 73 5b 27 52 65 74 75 72 6e 2d 50 61 74 68 27 5d 29 29 20 7b 0a pty($headers['Return-Path'])).{.
6f80 20 20 20 20 20 20 20 20 20 20 20 20 24 66 72 6f 6d 20 3d 20 24 68 65 61 64 65 72 73 5b 27 52 65 ............$from.=.$headers['Re
6fa0 74 75 72 6e 2d 50 61 74 68 27 5d 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 turn-Path'];.........}..........
6fc0 69 66 20 28 21 69 73 73 65 74 28 24 66 72 6f 6d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 if.(!isset($from)).{............
6fe0 20 72 65 74 75 72 6e 20 6e 65 77 20 50 45 41 52 5f 45 72 72 6f 72 28 27 4e 6f 20 66 72 6f 6d 20 .return.new.PEAR_Error('No.from.
7000 61 64 64 72 65 73 73 20 67 69 76 65 6e 27 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 address.given');.........}......
7020 20 20 20 20 69 66 20 28 50 45 41 52 3a 3a 69 73 45 72 72 6f 72 28 24 73 6d 74 70 2d 3e 6d 61 69 ....if.(PEAR::isError($smtp->mai
7040 6c 46 72 6f 6d 28 24 66 72 6f 6d 29 29 29 20 7b 20 72 65 74 75 72 6e 20 6e 65 77 20 50 45 41 52 lFrom($from))).{.return.new.PEAR
7060 5f 45 72 72 6f 72 28 27 75 6e 61 62 6c 65 20 74 6f 20 73 65 74 20 73 65 6e 64 65 72 20 74 6f 20 _Error('unable.to.set.sender.to.
7080 5b 27 20 2e 20 24 66 72 6f 6d 20 2e 20 27 5d 27 29 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 24 72 ['...$from...']');.}..........$r
70a0 65 63 69 70 69 65 6e 74 73 20 3d 20 24 74 68 69 73 2d 3e 70 61 72 73 65 52 65 63 69 70 69 65 6e ecipients.=.$this->parseRecipien
70c0 74 73 28 24 72 65 63 69 70 69 65 6e 74 73 29 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 ts($recipients);.........foreach
70e0 28 24 72 65 63 69 70 69 65 6e 74 73 20 61 73 20 24 72 65 63 69 70 69 65 6e 74 29 20 7b 0a 20 20 ($recipients.as.$recipient).{...
7100 20 20 20 20 20 20 20 20 20 20 69 66 20 28 50 45 41 52 3a 3a 69 73 45 72 72 6f 72 28 24 72 65 73 ..........if.(PEAR::isError($res
7120 20 3d 20 24 73 6d 74 70 2d 3e 72 63 70 74 54 6f 28 24 72 65 63 69 70 69 65 6e 74 29 29 29 20 7b .=.$smtp->rcptTo($recipient))).{
7140 20 72 65 74 75 72 6e 20 6e 65 77 20 50 45 41 52 5f 45 72 72 6f 72 28 27 75 6e 61 62 6c 65 20 74 .return.new.PEAR_Error('unable.t
7160 6f 20 61 64 64 20 72 65 63 69 70 69 65 6e 74 20 5b 27 20 2e 20 24 72 65 63 69 70 69 65 6e 74 20 o.add.recipient.['...$recipient.
7180 2e 20 27 5d 3a 20 27 20 2e 20 24 72 65 73 2d 3e 67 65 74 4d 65 73 73 61 67 65 28 29 29 3b 20 7d ..']:.'...$res->getMessage());.}
71a0 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 50 45 41 52 3a 3a 69 73 .........}..........if.(PEAR::is
71c0 45 72 72 6f 72 28 24 73 6d 74 70 2d 3e 64 61 74 61 28 24 74 65 78 74 5f 68 65 61 64 65 72 73 20 Error($smtp->data($text_headers.
71e0 2e 20 22 5c 72 5c 6e 22 20 2e 20 24 62 6f 64 79 29 29 29 20 7b 20 72 65 74 75 72 6e 20 6e 65 77 .."\r\n"...$body))).{.return.new
7200 20 50 45 41 52 5f 45 72 72 6f 72 28 27 75 6e 61 62 6c 65 20 74 6f 20 73 65 6e 64 20 64 61 74 61 .PEAR_Error('unable.to.send.data
7220 27 29 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 24 73 6d 74 70 2d 3e 64 69 73 63 6f 6e 6e 65 63 74 ');.}..........$smtp->disconnect
7240 28 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 7d 0a 7d ();.........return.true;.....}.}
7260 0a 0a 3f 3e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..?>............................
7280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
72e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
73e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7400 4d 61 69 6c 2d 31 2e 31 2e 30 2f 4d 61 69 6c 2f 52 46 43 38 32 32 2e 70 68 70 00 00 00 00 00 00 Mail-1.1.0/Mail/RFC822.php......
7420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7460 00 00 00 00 31 30 30 36 34 34 20 00 20 20 31 37 35 30 20 00 20 20 31 37 35 30 20 00 20 20 20 20 ....100644....1750....1750......
7480 20 20 37 35 31 36 30 20 20 37 36 37 32 36 34 30 31 33 35 20 20 31 30 31 30 31 20 00 00 00 00 00 ..75160..7672640135..10101......
74a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
74e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
75e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7600 3c 3f 70 68 70 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d <?php.//.+----------------------
7620 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
7640 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 43 6f 70 79 72 69 67 68 -----------------+.//.|.Copyrigh
7660 74 20 28 63 29 20 32 30 30 31 2d 32 30 30 32 2c 20 52 69 63 68 61 72 64 20 48 65 79 65 73 20 20 t.(c).2001-2002,.Richard.Heyes..
7680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a ..............................|.
76a0 2f 2f 20 7c 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 20 20 20 20 20 20 20 //.|.All.rights.reserved........
76c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
76e0 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........|.//.|...............
7700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 52 ........................|.//.|.R
7740 65 64 69 73 74 72 69 62 75 74 69 6f 6e 20 61 6e 64 20 75 73 65 20 69 6e 20 73 6f 75 72 63 65 20 edistribution.and.use.in.source.
7760 61 6e 64 20 62 69 6e 61 72 79 20 66 6f 72 6d 73 2c 20 77 69 74 68 20 6f 72 20 77 69 74 68 6f 75 and.binary.forms,.with.or.withou
7780 74 20 20 20 20 7c 0a 2f 2f 20 7c 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 2c 20 61 72 65 20 70 65 t....|.//.|.modification,.are.pe
77a0 72 6d 69 74 74 65 64 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 74 68 65 20 66 6f 6c 6c 6f 77 rmitted.provided.that.the.follow
77c0 69 6e 67 20 63 6f 6e 64 69 74 69 6f 6e 73 20 20 20 20 7c 0a 2f 2f 20 7c 20 61 72 65 20 6d 65 74 ing.conditions....|.//.|.are.met
77e0 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :...............................
7800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c ...............................|
7820 0a 2f 2f 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .//.|...........................
7840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7860 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 6f 20 52 65 64 69 73 74 72 69 62 75 74 ............|.//.|.o.Redistribut
7880 69 6f 6e 73 20 6f 66 20 73 6f 75 72 63 65 20 63 6f 64 65 20 6d 75 73 74 20 72 65 74 61 69 6e 20 ions.of.source.code.must.retain.
78a0 74 68 65 20 61 62 6f 76 65 20 63 6f 70 79 72 69 67 68 74 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 the.above.copyright......|.//.|.
78c0 20 20 6e 6f 74 69 63 65 2c 20 74 68 69 73 20 6c 69 73 74 20 6f 66 20 63 6f 6e 64 69 74 69 6f 6e ..notice,.this.list.of.condition
78e0 73 20 61 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 69 73 63 6c 61 69 6d 65 72 2e 20 s.and.the.following.disclaimer..
7900 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 6f 20 52 65 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 69 ......|.//.|.o.Redistributions.i
7920 6e 20 62 69 6e 61 72 79 20 66 6f 72 6d 20 6d 75 73 74 20 72 65 70 72 6f 64 75 63 65 20 74 68 65 n.binary.form.must.reproduce.the
7940 20 61 62 6f 76 65 20 63 6f 70 79 72 69 67 68 74 20 20 20 7c 0a 2f 2f 20 7c 20 20 20 6e 6f 74 69 .above.copyright...|.//.|...noti
7960 63 65 2c 20 74 68 69 73 20 6c 69 73 74 20 6f 66 20 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e 64 20 ce,.this.list.of.conditions.and.
7980 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 69 73 63 6c 61 69 6d 65 72 20 69 6e 20 74 68 65 20 the.following.disclaimer.in.the.
79a0 7c 0a 2f 2f 20 7c 20 20 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 2f 6f 72 20 6f 74 |.//.|...documentation.and/or.ot
79c0 68 65 72 20 6d 61 74 65 72 69 61 6c 73 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 74 68 65 20 her.materials.provided.with.the.
79e0 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 7c 20 0a 2f 2f 20 7c 20 6f 20 54 68 65 20 6e 61 6d 65 73 distribution.|..//.|.o.The.names
7a00 20 6f 66 20 74 68 65 20 61 75 74 68 6f 72 73 20 6d 61 79 20 6e 6f 74 20 62 65 20 75 73 65 64 20 .of.the.authors.may.not.be.used.
7a20 74 6f 20 65 6e 64 6f 72 73 65 20 6f 72 20 70 72 6f 6d 6f 74 65 20 20 20 20 20 20 7c 0a 2f 2f 20 to.endorse.or.promote......|.//.
7a40 7c 20 20 20 70 72 6f 64 75 63 74 73 20 64 65 72 69 76 65 64 20 66 72 6f 6d 20 74 68 69 73 20 73 |...products.derived.from.this.s
7a60 6f 66 74 77 61 72 65 20 77 69 74 68 6f 75 74 20 73 70 65 63 69 66 69 63 20 70 72 69 6f 72 20 77 oftware.without.specific.prior.w
7a80 72 69 74 74 65 6e 20 20 7c 0a 2f 2f 20 7c 20 20 20 70 65 72 6d 69 73 73 69 6f 6e 2e 20 20 20 20 ritten..|.//.|...permission.....
7aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 20 20 20 20 .....................|.//.|.....
7ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7b20 20 20 7c 0a 2f 2f 20 7c 20 54 48 49 53 20 53 4f 46 54 57 41 52 45 20 49 53 20 50 52 4f 56 49 44 ..|.//.|.THIS.SOFTWARE.IS.PROVID
7b40 45 44 20 42 59 20 54 48 45 20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c 44 45 52 53 20 41 4e 44 20 ED.BY.THE.COPYRIGHT.HOLDERS.AND.
7b60 43 4f 4e 54 52 49 42 55 54 4f 52 53 20 20 20 7c 0a 2f 2f 20 7c 20 22 41 53 20 49 53 22 20 41 4e CONTRIBUTORS...|.//.|."AS.IS".AN
7b80 44 20 41 4e 59 20 45 58 50 52 45 53 53 20 4f 52 20 49 4d 50 4c 49 45 44 20 57 41 52 52 41 4e 54 D.ANY.EXPRESS.OR.IMPLIED.WARRANT
7ba0 49 45 53 2c 20 49 4e 43 4c 55 44 49 4e 47 2c 20 42 55 54 20 4e 4f 54 20 20 20 20 20 7c 0a 2f 2f IES,.INCLUDING,.BUT.NOT.....|.//
7bc0 20 7c 20 4c 49 4d 49 54 45 44 20 54 4f 2c 20 54 48 45 20 49 4d 50 4c 49 45 44 20 57 41 52 52 41 .|.LIMITED.TO,.THE.IMPLIED.WARRA
7be0 4e 54 49 45 53 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 41 4e 44 20 46 49 54 NTIES.OF.MERCHANTABILITY.AND.FIT
7c00 4e 45 53 53 20 46 4f 52 20 7c 0a 2f 2f 20 7c 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 NESS.FOR.|.//.|.A.PARTICULAR.PUR
7c20 50 4f 53 45 20 41 52 45 20 44 49 53 43 4c 41 49 4d 45 44 2e 20 49 4e 20 4e 4f 20 45 56 45 4e 54 POSE.ARE.DISCLAIMED..IN.NO.EVENT
7c40 20 53 48 41 4c 4c 20 54 48 45 20 43 4f 50 59 52 49 47 48 54 20 20 7c 0a 2f 2f 20 7c 20 4f 57 4e .SHALL.THE.COPYRIGHT..|.//.|.OWN
7c60 45 52 20 4f 52 20 43 4f 4e 54 52 49 42 55 54 4f 52 53 20 42 45 20 4c 49 41 42 4c 45 20 46 4f 52 ER.OR.CONTRIBUTORS.BE.LIABLE.FOR
7c80 20 41 4e 59 20 44 49 52 45 43 54 2c 20 49 4e 44 49 52 45 43 54 2c 20 49 4e 43 49 44 45 4e 54 41 .ANY.DIRECT,.INDIRECT,.INCIDENTA
7ca0 4c 2c 20 7c 0a 2f 2f 20 7c 20 53 50 45 43 49 41 4c 2c 20 45 58 45 4d 50 4c 41 52 59 2c 20 4f 52 L,.|.//.|.SPECIAL,.EXEMPLARY,.OR
7cc0 20 43 4f 4e 53 45 51 55 45 4e 54 49 41 4c 20 44 41 4d 41 47 45 53 20 28 49 4e 43 4c 55 44 49 4e .CONSEQUENTIAL.DAMAGES.(INCLUDIN
7ce0 47 2c 20 42 55 54 20 4e 4f 54 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 4c 49 4d 49 54 45 44 20 54 G,.BUT.NOT......|.//.|.LIMITED.T
7d00 4f 2c 20 50 52 4f 43 55 52 45 4d 45 4e 54 20 4f 46 20 53 55 42 53 54 49 54 55 54 45 20 47 4f 4f O,.PROCUREMENT.OF.SUBSTITUTE.GOO
7d20 44 53 20 4f 52 20 53 45 52 56 49 43 45 53 3b 20 4c 4f 53 53 20 4f 46 20 55 53 45 2c 20 7c 0a 2f DS.OR.SERVICES;.LOSS.OF.USE,.|./
7d40 2f 20 7c 20 44 41 54 41 2c 20 4f 52 20 50 52 4f 46 49 54 53 3b 20 4f 52 20 42 55 53 49 4e 45 53 /.|.DATA,.OR.PROFITS;.OR.BUSINES
7d60 53 20 49 4e 54 45 52 52 55 50 54 49 4f 4e 29 20 48 4f 57 45 56 45 52 20 43 41 55 53 45 44 20 41 S.INTERRUPTION).HOWEVER.CAUSED.A
7d80 4e 44 20 4f 4e 20 41 4e 59 20 7c 0a 2f 2f 20 7c 20 54 48 45 4f 52 59 20 4f 46 20 4c 49 41 42 49 ND.ON.ANY.|.//.|.THEORY.OF.LIABI
7da0 4c 49 54 59 2c 20 57 48 45 54 48 45 52 20 49 4e 20 43 4f 4e 54 52 41 43 54 2c 20 53 54 52 49 43 LITY,.WHETHER.IN.CONTRACT,.STRIC
7dc0 54 20 4c 49 41 42 49 4c 49 54 59 2c 20 4f 52 20 54 4f 52 54 20 20 20 7c 0a 2f 2f 20 7c 20 28 49 T.LIABILITY,.OR.TORT...|.//.|.(I
7de0 4e 43 4c 55 44 49 4e 47 20 4e 45 47 4c 49 47 45 4e 43 45 20 4f 52 20 4f 54 48 45 52 57 49 53 45 NCLUDING.NEGLIGENCE.OR.OTHERWISE
7e00 29 20 41 52 49 53 49 4e 47 20 49 4e 20 41 4e 59 20 57 41 59 20 4f 55 54 20 4f 46 20 54 48 45 20 ).ARISING.IN.ANY.WAY.OUT.OF.THE.
7e20 55 53 45 20 7c 0a 2f 2f 20 7c 20 4f 46 20 54 48 49 53 20 53 4f 46 54 57 41 52 45 2c 20 45 56 45 USE.|.//.|.OF.THIS.SOFTWARE,.EVE
7e40 4e 20 49 46 20 41 44 56 49 53 45 44 20 4f 46 20 54 48 45 20 50 4f 53 53 49 42 49 4c 49 54 59 20 N.IF.ADVISED.OF.THE.POSSIBILITY.
7e60 4f 46 20 53 55 43 48 20 44 41 4d 41 47 45 2e 20 20 7c 0a 2f 2f 20 7c 20 20 20 20 20 20 20 20 20 OF.SUCH.DAMAGE...|.//.|.........
7e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a ..............................|.
7ec0 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d //.+----------------------------
7ee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
7f00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 2f 2f 20 7c 20 41 75 74 68 6f 72 73 3a 20 52 69 63 68 61 -----------+.//.|.Authors:.Richa
7f20 72 64 20 48 65 79 65 73 20 3c 72 69 63 68 61 72 64 40 70 68 70 67 75 72 75 2e 6f 72 67 3e 20 20 rd.Heyes.<richard@phpguru.org>..
7f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 2f 2f 20 7c 20 20 ........................|.//.|..
7f60 20 20 20 20 20 20 20 20 43 68 75 63 6b 20 48 61 67 65 6e 62 75 63 68 20 3c 63 68 75 63 6b 40 68 ........Chuck.Hagenbuch.<chuck@h
7f80 6f 72 64 65 2e 6f 72 67 3e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 orde.org>.......................
7fa0 20 20 20 20 20 7c 0a 2f 2f 20 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .....|.//.+---------------------
7fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
7fe0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0a 0a 2f 2a 2a 0a 2a 20 52 46 43 20 38 ------------------+../**.*.RFC.8
8000 32 32 20 45 6d 61 69 6c 20 61 64 64 72 65 73 73 20 6c 69 73 74 20 76 61 6c 69 64 61 74 69 6f 6e 22.Email.address.list.validation
8020 20 55 74 69 6c 69 74 79 0a 2a 0a 2a 20 57 68 61 74 20 69 73 20 69 74 3f 0a 2a 0a 2a 20 54 68 69 .Utility.*.*.What.is.it?.*.*.Thi
8040 73 20 63 6c 61 73 73 20 77 69 6c 6c 20 74 61 6b 65 20 61 6e 20 61 64 64 72 65 73 73 20 73 74 72 s.class.will.take.an.address.str
8060 69 6e 67 2c 20 61 6e 64 20 70 61 72 73 65 20 69 74 20 69 6e 74 6f 20 69 74 27 73 20 63 6f 6e 73 ing,.and.parse.it.into.it's.cons
8080 69 74 75 65 6e 74 0a 2a 20 70 61 72 74 73 2c 20 62 65 20 74 68 61 74 20 65 69 74 68 65 72 20 61 ituent.*.parts,.be.that.either.a
80a0 64 64 72 65 73 73 65 73 2c 20 67 72 6f 75 70 73 2c 20 6f 72 20 63 6f 6d 62 69 6e 61 74 69 6f 6e ddresses,.groups,.or.combination
80c0 73 2e 20 4e 65 73 74 65 64 20 67 72 6f 75 70 73 0a 2a 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f s..Nested.groups.*.are.not.suppo
80e0 72 74 65 64 2e 20 54 68 65 20 73 74 72 75 63 74 75 72 65 20 69 74 20 72 65 74 75 72 6e 73 20 69 rted..The.structure.it.returns.i
8100 73 20 70 72 65 74 74 79 20 73 74 72 61 69 67 68 74 20 66 6f 72 77 61 72 64 2c 0a 2a 20 61 6e 64 s.pretty.straight.forward,.*.and
8120 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 61 74 20 70 72 6f 76 69 64 65 64 20 62 79 20 .is.similar.to.that.provided.by.
8140 74 68 65 20 69 6d 61 70 5f 72 66 63 38 32 32 5f 70 61 72 73 65 5f 61 64 72 6c 69 73 74 28 29 2e the.imap_rfc822_parse_adrlist().
8160 20 55 73 65 0a 2a 20 70 72 69 6e 74 5f 72 28 29 20 74 6f 20 76 69 65 77 20 74 68 65 20 73 74 72 .Use.*.print_r().to.view.the.str
8180 75 63 74 75 72 65 2e 0a 2a 0a 2a 20 48 6f 77 20 64 6f 20 49 20 75 73 65 20 69 74 3f 0a 2a 0a 2a ucture..*.*.How.do.I.use.it?.*.*
81a0 20 24 61 64 64 72 65 73 73 5f 73 74 72 69 6e 67 20 3d 20 27 4d 79 20 47 72 6f 75 70 3a 20 22 52 .$address_string.=.'My.Group:."R
81c0 69 63 68 61 72 64 22 20 3c 72 69 63 68 61 72 64 40 6c 6f 63 61 6c 68 6f 73 74 3e 20 28 41 20 63 ichard".<richard@localhost>.(A.c
81e0 6f 6d 6d 65 6e 74 29 2c 20 74 65 64 40 65 78 61 6d 70 6c 65 2e 63 6f 6d 20 28 54 65 64 20 42 6c omment),.ted@example.com.(Ted.Bl
8200 6f 67 67 73 29 2c 20 42 61 72 6e 65 79 3b 27 3b 0a 2a 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 oggs),.Barney;';.*.$structure.=.
8220 4d 61 69 6c 5f 52 46 43 38 32 32 3a 3a 70 61 72 73 65 41 64 64 72 65 73 73 4c 69 73 74 28 24 61 Mail_RFC822::parseAddressList($a
8240 64 64 72 65 73 73 5f 73 74 72 69 6e 67 2c 20 27 65 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 20 74 72 ddress_string,.'example.com',.tr
8260 75 65 29 0a 2a 20 70 72 69 6e 74 5f 72 28 24 73 74 72 75 63 74 75 72 65 29 3b 0a 2a 0a 2a 20 40 ue).*.print_r($structure);.*.*.@
8280 61 75 74 68 6f 72 20 20 52 69 63 68 61 72 64 20 48 65 79 65 73 20 3c 72 69 63 68 61 72 64 40 70 author..Richard.Heyes.<richard@p
82a0 68 70 67 75 72 75 2e 6f 72 67 3e 0a 2a 20 40 61 75 74 68 6f 72 20 20 43 68 75 63 6b 20 48 61 67 hpguru.org>.*.@author..Chuck.Hag
82c0 65 6e 62 75 63 68 20 3c 63 68 75 63 6b 40 68 6f 72 64 65 2e 6f 72 67 3e 0a 2a 20 40 76 65 72 73 enbuch.<chuck@horde.org>.*.@vers
82e0 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e 37 20 24 0a 2a 20 40 6c 69 63 65 6e 73 65 20 ion.$Revision:.1.7.$.*.@license.
8300 42 53 44 0a 2a 20 40 70 61 63 6b 61 67 65 20 4d 61 69 6c 0a 2a 2f 0a 0a 63 6c 61 73 73 20 4d 61 BSD.*.@package.Mail.*/..class.Ma
8320 69 6c 5f 52 46 43 38 32 32 20 7b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 il_RFC822.{....../**......*.The.
8340 61 64 64 72 65 73 73 20 62 65 69 6e 67 20 70 61 72 73 65 64 20 62 79 20 74 68 65 20 52 46 43 38 address.being.parsed.by.the.RFC8
8360 32 32 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 20 73 74 72 69 6e 67 20 24 61 22.object.......*.@var.string.$a
8380 64 64 72 65 73 73 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 61 64 64 72 65 73 73 20 ddress......*/.....var.$address.
83a0 3d 20 27 27 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 64 65 66 61 75 6c =.'';....../**......*.The.defaul
83c0 74 20 64 6f 6d 61 69 6e 20 74 6f 20 75 73 65 20 66 6f 72 20 75 6e 71 75 61 6c 69 66 69 65 64 20 t.domain.to.use.for.unqualified.
83e0 61 64 64 72 65 73 73 65 73 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 20 73 74 72 69 6e 67 20 24 64 addresses.......*.@var.string.$d
8400 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 64 efault_domain......*/.....var.$d
8420 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 20 3d 20 27 6c 6f 63 61 6c 68 6f 73 74 27 3b 0a 0a 20 20 efault_domain.=.'localhost';....
8440 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 68 6f 75 6c 64 20 77 65 20 72 65 74 75 72 6e 20 61 20 ../**......*.Should.we.return.a.
8460 6e 65 73 74 65 64 20 61 72 72 61 79 20 73 68 6f 77 69 6e 67 20 67 72 6f 75 70 73 2c 20 6f 72 20 nested.array.showing.groups,.or.
8480 66 6c 61 74 74 65 6e 20 65 76 65 72 79 74 68 69 6e 67 3f 0a 20 20 20 20 20 2a 20 40 76 61 72 20 flatten.everything?......*.@var.
84a0 62 6f 6f 6c 65 61 6e 20 24 6e 65 73 74 47 72 6f 75 70 73 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 boolean.$nestGroups......*/.....
84c0 76 61 72 20 24 6e 65 73 74 47 72 6f 75 70 73 20 3d 20 74 72 75 65 3b 0a 0a 20 20 20 20 2f 2a 2a var.$nestGroups.=.true;....../**
84e0 0a 20 20 20 20 20 2a 20 57 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 6f 20 76 61 6c 69 64 61 ......*.Whether.or.not.to.valida
8500 74 65 20 61 74 6f 6d 73 20 66 6f 72 20 6e 6f 6e 2d 61 73 63 69 69 20 63 68 61 72 61 63 74 65 72 te.atoms.for.non-ascii.character
8520 73 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 20 62 6f 6f 6c 65 61 6e 20 24 76 61 6c 69 64 61 74 65 s.......*.@var.boolean.$validate
8540 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 76 61 6c 69 64 61 74 65 20 3d 20 74 72 75 ......*/.....var.$validate.=.tru
8560 65 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 e;....../**......*.The.array.of.
8580 72 61 77 20 61 64 64 72 65 73 73 65 73 20 62 75 69 6c 74 20 75 70 20 61 73 20 77 65 20 70 61 72 raw.addresses.built.up.as.we.par
85a0 73 65 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 20 61 72 72 61 79 20 24 61 64 64 72 65 73 73 65 73 se.......*.@var.array.$addresses
85c0 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 61 64 64 72 65 73 73 65 73 20 3d 20 61 72 ......*/.....var.$addresses.=.ar
85e0 72 61 79 28 29 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 66 69 6e 61 6c ray();....../**......*.The.final
8600 20 61 72 72 61 79 20 6f 66 20 70 61 72 73 65 64 20 61 64 64 72 65 73 73 20 69 6e 66 6f 72 6d 61 .array.of.parsed.address.informa
8620 74 69 6f 6e 20 74 68 61 74 20 77 65 20 62 75 69 6c 64 20 75 70 2e 0a 20 20 20 20 20 2a 20 40 76 tion.that.we.build.up.......*.@v
8640 61 72 20 61 72 72 61 79 20 24 73 74 72 75 63 74 75 72 65 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 ar.array.$structure......*/.....
8660 76 61 72 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 61 72 72 61 79 28 29 3b 0a 0a 20 20 20 20 2f var.$structure.=.array();....../
8680 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 63 75 72 72 65 6e 74 20 65 72 72 6f 72 20 6d 65 73 73 **......*.The.current.error.mess
86a0 61 67 65 2c 20 69 66 20 61 6e 79 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 20 73 74 72 69 6e 67 20 age,.if.any.......*.@var.string.
86c0 24 65 72 72 6f 72 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 65 72 72 6f 72 20 3d 20 $error......*/.....var.$error.=.
86e0 6e 75 6c 6c 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 41 6e 20 69 6e 74 65 72 6e 61 null;....../**......*.An.interna
8700 6c 20 63 6f 75 6e 74 65 72 2f 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 20 69 l.counter/pointer.......*.@var.i
8720 6e 74 65 67 65 72 20 24 69 6e 64 65 78 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 69 nteger.$index......*/.....var.$i
8740 6e 64 65 78 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 ndex.=.null;....../**......*.The
8760 20 6e 75 6d 62 65 72 20 6f 66 20 67 72 6f 75 70 73 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6e .number.of.groups.that.have.been
8780 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 61 64 64 72 65 73 73 20 6c 69 73 74 2e 0a 20 20 20 20 .found.in.the.address.list......
87a0 20 2a 20 40 76 61 72 20 69 6e 74 65 67 65 72 20 24 6e 75 6d 5f 67 72 6f 75 70 73 0a 20 20 20 20 .*.@var.integer.$num_groups.....
87c0 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 .*.@access.public......*/.....va
87e0 72 20 24 6e 75 6d 5f 67 72 6f 75 70 73 20 3d 20 30 3b 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 r.$num_groups.=.0;....../**.....
8800 20 2a 20 41 20 76 61 72 69 61 62 6c 65 20 73 6f 20 74 68 61 74 20 77 65 20 63 61 6e 20 74 65 6c .*.A.variable.so.that.we.can.tel
8820 6c 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 77 65 27 72 65 20 69 6e 73 69 64 65 20 61 0a l.whether.or.not.we're.inside.a.
8840 20 20 20 20 20 2a 20 4d 61 69 6c 5f 52 46 43 38 32 32 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 .....*.Mail_RFC822.object.......
8860 2a 20 40 76 61 72 20 62 6f 6f 6c 65 61 6e 20 24 6d 61 69 6c 52 46 43 38 32 32 0a 20 20 20 20 20 *.@var.boolean.$mailRFC822......
8880 2a 2f 0a 20 20 20 20 76 61 72 20 24 6d 61 69 6c 52 46 43 38 32 32 20 3d 20 74 72 75 65 3b 0a 20 */.....var.$mailRFC822.=.true;..
88a0 20 20 20 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 2a 20 41 20 6c 69 6d 69 74 20 61 66 74 65 72 20 ......../**.....*.A.limit.after.
88c0 77 68 69 63 68 20 70 72 6f 63 65 73 73 69 6e 67 20 73 74 6f 70 73 0a 20 20 20 20 2a 20 40 76 61 which.processing.stops.....*.@va
88e0 72 20 69 6e 74 20 24 6c 69 6d 69 74 0a 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 6c 69 6d r.int.$limit.....*/.....var.$lim
8900 69 74 20 3d 20 6e 75 6c 6c 3b 0a 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 65 74 73 it.=.null;......./**......*.Sets
8920 20 75 70 20 74 68 65 20 6f 62 6a 65 63 74 2e 20 54 68 65 20 61 64 64 72 65 73 73 20 6d 75 73 74 .up.the.object..The.address.must
8940 20 65 69 74 68 65 72 20 62 65 20 73 65 74 20 68 65 72 65 20 6f 72 20 77 68 65 6e 0a 20 20 20 20 .either.be.set.here.or.when.....
8960 20 2a 20 63 61 6c 6c 69 6e 67 20 70 61 72 73 65 41 64 64 72 65 73 73 4c 69 73 74 28 29 2e 20 4f .*.calling.parseAddressList()..O
8980 6e 65 20 6f 72 20 74 68 65 20 6f 74 68 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 ne.or.the.other.......*......*.@
89a0 61 63 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 access.public......*.@param.stri
89c0 6e 67 20 20 24 61 64 64 72 65 73 73 20 20 20 20 20 20 20 20 20 54 68 65 20 61 64 64 72 65 73 73 ng..$address.........The.address
89e0 28 65 73 29 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 (es).to.validate.......*.@param.
8a00 73 74 72 69 6e 67 20 20 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 20 20 44 65 66 61 75 6c 74 string..$default_domain..Default
8a20 20 64 6f 6d 61 69 6e 2f 68 6f 73 74 20 65 74 63 2e 20 49 66 20 6e 6f 74 20 73 75 70 70 6c 69 65 .domain/host.etc..If.not.supplie
8a40 64 2c 20 77 69 6c 6c 20 62 65 20 73 65 74 20 74 6f 20 6c 6f 63 61 6c 68 6f 73 74 2e 0a 20 20 20 d,.will.be.set.to.localhost.....
8a60 20 20 2a 20 40 70 61 72 61 6d 20 62 6f 6f 6c 65 61 6e 20 24 6e 65 73 74 5f 67 72 6f 75 70 73 20 ..*.@param.boolean.$nest_groups.
8a80 20 20 20 20 57 68 65 74 68 65 72 20 74 6f 20 72 65 74 75 72 6e 20 74 68 65 20 73 74 72 75 63 74 ....Whether.to.return.the.struct
8aa0 75 72 65 20 77 69 74 68 20 67 72 6f 75 70 73 20 6e 65 73 74 65 64 20 66 6f 72 20 65 61 73 69 65 ure.with.groups.nested.for.easie
8ac0 72 20 76 69 65 77 69 6e 67 2e 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 62 6f 6f 6c 65 61 6e r.viewing.......*.@param.boolean
8ae0 20 24 76 61 6c 69 64 61 74 65 20 20 20 20 20 20 20 20 57 68 65 74 68 65 72 20 74 6f 20 76 61 6c .$validate........Whether.to.val
8b00 69 64 61 74 65 20 61 74 6f 6d 73 2e 20 54 75 72 6e 20 74 68 69 73 20 6f 66 66 20 69 66 20 79 6f idate.atoms..Turn.this.off.if.yo
8b20 75 20 6e 65 65 64 20 74 6f 20 72 75 6e 20 61 64 64 72 65 73 73 65 73 20 74 68 72 6f 75 67 68 20 u.need.to.run.addresses.through.
8b40 62 65 66 6f 72 65 20 65 6e 63 6f 64 69 6e 67 20 74 68 65 20 70 65 72 73 6f 6e 61 6c 20 6e 61 6d before.encoding.the.personal.nam
8b60 65 73 2c 20 66 6f 72 20 69 6e 73 74 61 6e 63 65 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a es,.for.instance.......*.......*
8b80 20 40 72 65 74 75 72 6e 20 6f 62 6a 65 63 74 20 4d 61 69 6c 5f 52 46 43 38 32 32 20 41 20 6e 65 .@return.object.Mail_RFC822.A.ne
8ba0 77 20 4d 61 69 6c 5f 52 46 43 38 32 32 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 w.Mail_RFC822.object.......*/...
8bc0 20 20 66 75 6e 63 74 69 6f 6e 20 4d 61 69 6c 5f 52 46 43 38 32 32 28 24 61 64 64 72 65 73 73 20 ..function.Mail_RFC822($address.
8be0 3d 20 6e 75 6c 6c 2c 20 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 20 3d 20 6e 75 6c 6c 2c 20 =.null,.$default_domain.=.null,.
8c00 24 6e 65 73 74 5f 67 72 6f 75 70 73 20 3d 20 6e 75 6c 6c 2c 20 24 76 61 6c 69 64 61 74 65 20 3d $nest_groups.=.null,.$validate.=
8c20 20 6e 75 6c 6c 2c 20 24 6c 69 6d 69 74 20 3d 20 6e 75 6c 6c 29 0a 20 20 20 20 7b 0a 20 20 20 20 .null,.$limit.=.null).....{.....
8c40 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 61 64 64 72 65 73 73 29 29 20 20 20 20 20 20 20 20 ....if.(isset($address))........
8c60 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 20 20 20 20 20 20 20 20 3d 20 24 61 64 64 72 65 73 73 $this->address........=.$address
8c80 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 64 65 66 61 75 6c 74 5f 64 6f 6d ;.........if.(isset($default_dom
8ca0 61 69 6e 29 29 20 24 74 68 69 73 2d 3e 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 20 3d 20 24 64 ain)).$this->default_domain.=.$d
8cc0 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 efault_domain;.........if.(isset
8ce0 28 24 6e 65 73 74 5f 67 72 6f 75 70 73 29 29 20 20 20 20 24 74 68 69 73 2d 3e 6e 65 73 74 47 72 ($nest_groups))....$this->nestGr
8d00 6f 75 70 73 20 20 20 20 20 3d 20 24 6e 65 73 74 5f 67 72 6f 75 70 73 3b 0a 20 20 20 20 20 20 20 oups.....=.$nest_groups;........
8d20 20 69 66 20 28 69 73 73 65 74 28 24 76 61 6c 69 64 61 74 65 29 29 20 20 20 20 20 20 20 24 74 68 .if.(isset($validate)).......$th
8d40 69 73 2d 3e 76 61 6c 69 64 61 74 65 20 20 20 20 20 20 20 3d 20 24 76 61 6c 69 64 61 74 65 3b 0a is->validate.......=.$validate;.
8d60 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 6c 69 6d 69 74 29 29 20 20 20 20 20 20 ........if.(isset($limit))......
8d80 20 20 20 20 24 74 68 69 73 2d 3e 6c 69 6d 69 74 20 20 20 20 20 20 20 20 20 20 3d 20 24 6c 69 6d ....$this->limit..........=.$lim
8da0 69 74 3b 0a 20 20 20 20 7d 0a 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 74 61 72 74 it;.....}......./**......*.Start
8dc0 73 20 74 68 65 20 77 68 6f 6c 65 20 70 72 6f 63 65 73 73 2e 20 54 68 65 20 61 64 64 72 65 73 73 s.the.whole.process..The.address
8de0 20 6d 75 73 74 20 65 69 74 68 65 72 20 62 65 20 73 65 74 20 68 65 72 65 0a 20 20 20 20 20 2a 20 .must.either.be.set.here......*.
8e00 6f 72 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 20 74 68 65 20 6f 62 6a 65 63 74 2e 20 4f 6e 65 or.when.creating.the.object..One
8e20 20 6f 72 20 74 68 65 20 6f 74 68 65 72 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 .or.the.other.......*......*.@ac
8e40 63 65 73 73 20 70 75 62 6c 69 63 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 cess.public......*.@param.string
8e60 20 20 24 61 64 64 72 65 73 73 20 20 20 20 20 20 20 20 20 54 68 65 20 61 64 64 72 65 73 73 28 65 ..$address.........The.address(e
8e80 73 29 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 s).to.validate.......*.@param.st
8ea0 72 69 6e 67 20 20 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 20 20 44 65 66 61 75 6c 74 20 64 ring..$default_domain..Default.d
8ec0 6f 6d 61 69 6e 2f 68 6f 73 74 20 65 74 63 2e 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 62 6f omain/host.etc.......*.@param.bo
8ee0 6f 6c 65 61 6e 20 24 6e 65 73 74 5f 67 72 6f 75 70 73 20 20 20 20 20 57 68 65 74 68 65 72 20 74 olean.$nest_groups.....Whether.t
8f00 6f 20 72 65 74 75 72 6e 20 74 68 65 20 73 74 72 75 63 74 75 72 65 20 77 69 74 68 20 67 72 6f 75 o.return.the.structure.with.grou
8f20 70 73 20 6e 65 73 74 65 64 20 66 6f 72 20 65 61 73 69 65 72 20 76 69 65 77 69 6e 67 2e 0a 20 20 ps.nested.for.easier.viewing....
8f40 20 20 20 2a 20 40 70 61 72 61 6d 20 62 6f 6f 6c 65 61 6e 20 24 76 61 6c 69 64 61 74 65 20 20 20 ...*.@param.boolean.$validate...
8f60 20 20 20 20 20 57 68 65 74 68 65 72 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 74 6f 6d 73 2e 20 .....Whether.to.validate.atoms..
8f80 54 75 72 6e 20 74 68 69 73 20 6f 66 66 20 69 66 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 72 75 6e Turn.this.off.if.you.need.to.run
8fa0 20 61 64 64 72 65 73 73 65 73 20 74 68 72 6f 75 67 68 20 62 65 66 6f 72 65 20 65 6e 63 6f 64 69 .addresses.through.before.encodi
8fc0 6e 67 20 74 68 65 20 70 65 72 73 6f 6e 61 6c 20 6e 61 6d 65 73 2c 20 66 6f 72 20 69 6e 73 74 61 ng.the.personal.names,.for.insta
8fe0 6e 63 65 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 61 72 72 61 nce.......*.......*.@return.arra
9000 79 20 41 20 73 74 72 75 63 74 75 72 65 64 20 61 72 72 61 79 20 6f 66 20 61 64 64 72 65 73 73 65 y.A.structured.array.of.addresse
9020 73 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 61 72 73 65 41 64 64 s.......*/.....function.parseAdd
9040 72 65 73 73 4c 69 73 74 28 24 61 64 64 72 65 73 73 20 3d 20 6e 75 6c 6c 2c 20 24 64 65 66 61 75 ressList($address.=.null,.$defau
9060 6c 74 5f 64 6f 6d 61 69 6e 20 3d 20 6e 75 6c 6c 2c 20 24 6e 65 73 74 5f 67 72 6f 75 70 73 20 3d lt_domain.=.null,.$nest_groups.=
9080 20 6e 75 6c 6c 2c 20 24 76 61 6c 69 64 61 74 65 20 3d 20 6e 75 6c 6c 2c 20 24 6c 69 6d 69 74 20 .null,.$validate.=.null,.$limit.
90a0 3d 20 6e 75 6c 6c 29 0a 20 20 20 20 7b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 69 73 73 65 =.null).....{..........if.(!isse
90c0 74 28 24 74 68 69 73 2d 3e 6d 61 69 6c 52 46 43 38 32 32 29 29 20 7b 0a 20 20 20 20 20 20 20 20 t($this->mailRFC822)).{.........
90e0 20 20 20 20 24 6f 62 6a 20 3d 20 6e 65 77 20 4d 61 69 6c 5f 52 46 43 38 32 32 28 24 61 64 64 72 ....$obj.=.new.Mail_RFC822($addr
9100 65 73 73 2c 20 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 2c 20 24 6e 65 73 74 5f 67 72 6f 75 ess,.$default_domain,.$nest_grou
9120 70 73 2c 20 24 76 61 6c 69 64 61 74 65 2c 20 24 6c 69 6d 69 74 29 3b 0a 20 20 20 20 20 20 20 20 ps,.$validate,.$limit);.........
9140 20 20 20 20 72 65 74 75 72 6e 20 24 6f 62 6a 2d 3e 70 61 72 73 65 41 64 64 72 65 73 73 4c 69 73 ....return.$obj->parseAddressLis
9160 74 28 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 t();.........}..........if.(isse
9180 74 28 24 61 64 64 72 65 73 73 29 29 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 61 64 64 72 65 t($address))........$this->addre
91a0 73 73 20 20 20 20 20 20 20 20 3d 20 24 61 64 64 72 65 73 73 3b 0a 20 20 20 20 20 20 20 20 69 66 ss........=.$address;.........if
91c0 20 28 69 73 73 65 74 28 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 29 29 20 24 74 68 69 73 2d .(isset($default_domain)).$this-
91e0 3e 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 20 3d 20 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 >default_domain.=.$default_domai
9200 6e 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 6e 65 73 74 5f 67 72 6f 75 70 n;.........if.(isset($nest_group
9220 73 29 29 20 20 20 20 24 74 68 69 73 2d 3e 6e 65 73 74 47 72 6f 75 70 73 20 20 20 20 20 3d 20 24 s))....$this->nestGroups.....=.$
9240 6e 65 73 74 5f 67 72 6f 75 70 73 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 nest_groups;.........if.(isset($
9260 76 61 6c 69 64 61 74 65 29 29 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 76 61 6c 69 64 61 74 65 validate)).......$this->validate
9280 20 20 20 20 20 20 20 3d 20 24 76 61 6c 69 64 61 74 65 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 .......=.$validate;.........if.(
92a0 69 73 73 65 74 28 24 6c 69 6d 69 74 29 29 20 20 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 6c isset($limit))..........$this->l
92c0 69 6d 69 74 20 20 20 20 20 20 20 20 20 20 3d 20 24 6c 69 6d 69 74 3b 0a 0a 20 20 20 20 20 20 20 imit..........=.$limit;.........
92e0 20 24 74 68 69 73 2d 3e 73 74 72 75 63 74 75 72 65 20 20 3d 20 61 72 72 61 79 28 29 3b 0a 20 20 .$this->structure..=.array();...
9300 20 20 20 20 20 20 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 65 73 20 20 3d 20 61 72 72 61 79 28 ......$this->addresses..=.array(
9320 29 3b 0a 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 65 72 72 6f 72 20 20 20 20 20 20 3d 20 6e );.........$this->error......=.n
9340 75 6c 6c 3b 0a 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 69 6e 64 65 78 20 20 20 20 20 20 3d ull;.........$this->index......=
9360 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 24 74 68 69 73 2d 3e 61 64 .null;..........while.($this->ad
9380 64 72 65 73 73 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 41 64 64 72 65 73 73 65 73 28 24 dress.=.$this->_splitAddresses($
93a0 74 68 69 73 2d 3e 61 64 64 72 65 73 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f this->address)).{.............co
93c0 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 ntinue;.........}...............
93e0 20 20 20 69 66 20 28 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 20 3d 3d 3d 20 66 61 6c 73 65 20 ...if.($this->address.===.false.
9400 7c 7c 20 69 73 73 65 74 28 24 74 68 69 73 2d 3e 65 72 72 6f 72 29 29 20 7b 0a 20 20 20 20 20 20 ||.isset($this->error)).{.......
9420 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 74 68 69 73 2d 3e 72 61 69 73 65 45 72 72 6f 72 28 24 ......return.$this->raiseError($
9440 74 68 69 73 2d 3e 65 72 72 6f 72 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 this->error);.........}.........
9460 20 2f 2f 20 4c 6f 6f 70 20 74 68 72 6f 75 67 68 20 61 6c 6c 20 74 68 65 20 61 64 64 72 65 73 73 .//.Loop.through.all.the.address
9480 65 73 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d 20 30 3b 20 24 69 20 3c 20 63 6f 75 es.........for.($i.=.0;.$i.<.cou
94a0 6e 74 28 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 65 73 29 3b 20 24 69 2b 2b 29 7b 0a 0a 20 20 nt($this->addresses);.$i++){....
94c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 24 72 65 74 75 72 6e 20 3d 20 24 74 68 69 73 2d 3e ..........if.(($return.=.$this->
94e0 5f 76 61 6c 69 64 61 74 65 41 64 64 72 65 73 73 28 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 65 _validateAddress($this->addresse
9500 73 5b 24 69 5d 29 29 20 3d 3d 3d 20 66 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s[$i])).===.false...............
9520 20 20 7c 7c 20 69 73 73 65 74 28 24 74 68 69 73 2d 3e 65 72 72 6f 72 29 29 20 7b 0a 20 20 20 20 ..||.isset($this->error)).{.....
9540 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 74 68 69 73 2d 3e 72 61 69 73 65 45 ............return.$this->raiseE
9560 72 72 6f 72 28 24 74 68 69 73 2d 3e 65 72 72 6f 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 rror($this->error);.............
9580 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 }..........................if.(!
95a0 24 74 68 69 73 2d 3e 6e 65 73 74 47 72 6f 75 70 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 $this->nestGroups).{............
95c0 20 20 20 20 20 24 74 68 69 73 2d 3e 73 74 72 75 63 74 75 72 65 20 3d 20 61 72 72 61 79 5f 6d 65 .....$this->structure.=.array_me
95e0 72 67 65 28 24 74 68 69 73 2d 3e 73 74 72 75 63 74 75 72 65 2c 20 24 72 65 74 75 72 6e 29 3b 0a rge($this->structure,.$return);.
9600 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 ............}.else.{............
9620 20 20 20 20 20 24 74 68 69 73 2d 3e 73 74 72 75 63 74 75 72 65 5b 5d 20 3d 20 24 72 65 74 75 72 .....$this->structure[].=.$retur
9640 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 n;.............}.........}......
9660 20 20 20 20 72 65 74 75 72 6e 20 24 74 68 69 73 2d 3e 73 74 72 75 63 74 75 72 65 3b 0a 20 20 20 ....return.$this->structure;....
9680 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 53 70 6c 69 74 73 20 61 6e 20 61 64 64 .}....../**......*.Splits.an.add
96a0 72 65 73 73 20 69 6e 74 6f 20 73 65 70 65 72 61 74 65 20 61 64 64 72 65 73 73 65 73 2e 0a 20 20 ress.into.seperate.addresses....
96c0 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 ...*.......*.@access.private....
96e0 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 61 64 64 72 65 73 73 20 54 68 65 20 61 ..*.@param.string.$address.The.a
9700 64 64 72 65 73 73 65 73 20 74 6f 20 73 70 6c 69 74 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 ddresses.to.split.......*.@retur
9720 6e 20 62 6f 6f 6c 65 61 6e 20 53 75 63 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 n.boolean.Success.or.failure....
9740 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 73 70 6c 69 74 41 64 64 72 65 73 73 ...*/.....function._splitAddress
9760 65 73 28 24 61 64 64 72 65 73 73 29 0a 20 20 20 20 7b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 es($address).....{..........if.(
9780 21 65 6d 70 74 79 28 24 74 68 69 73 2d 3e 6c 69 6d 69 74 29 20 41 4e 44 20 63 6f 75 6e 74 28 24 !empty($this->limit).AND.count($
97a0 74 68 69 73 2d 3e 61 64 64 72 65 73 73 65 73 29 20 3d 3d 20 24 74 68 69 73 2d 3e 6c 69 6d 69 74 this->addresses).==.$this->limit
97c0 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 27 3b 0a 20 20 20 20 20 ).{.............return.'';......
97e0 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 74 68 69 73 2d 3e 5f 69 73 47 72 6f 75 ...}..........if.($this->_isGrou
9800 70 28 24 61 64 64 72 65 73 73 29 20 26 26 20 21 69 73 73 65 74 28 24 74 68 69 73 2d 3e 65 72 72 p($address).&&.!isset($this->err
9820 6f 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 70 6c 69 74 5f 63 68 61 72 20 3d or)).{.............$split_char.=
9840 20 27 3b 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 69 73 5f 67 72 6f 75 70 20 20 20 3d 20 .';';.............$is_group...=.
9860 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20 28 21 69 73 73 65 74 28 24 true;.........}.elseif.(!isset($
9880 74 68 69 73 2d 3e 65 72 72 6f 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 70 6c this->error)).{.............$spl
98a0 69 74 5f 63 68 61 72 20 3d 20 27 2c 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 69 73 5f 67 it_char.=.',';.............$is_g
98c0 72 6f 75 70 20 20 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 roup...=.false;.........}.elseif
98e0 20 28 69 73 73 65 74 28 24 74 68 69 73 2d 3e 65 72 72 6f 72 29 29 20 7b 0a 20 20 20 20 20 20 20 .(isset($this->error)).{........
9900 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 .....return.false;.........}....
9920 20 20 20 20 20 20 2f 2f 20 53 70 6c 69 74 20 74 68 65 20 73 74 72 69 6e 67 20 62 61 73 65 64 20 ......//.Split.the.string.based.
9940 6f 6e 20 74 68 65 20 61 62 6f 76 65 20 74 65 6e 20 6f 72 20 73 6f 20 6c 69 6e 65 73 2e 0a 20 20 on.the.above.ten.or.so.lines....
9960 20 20 20 20 20 20 24 70 61 72 74 73 20 20 3d 20 65 78 70 6c 6f 64 65 28 24 73 70 6c 69 74 5f 63 ......$parts..=.explode($split_c
9980 68 61 72 2c 20 24 61 64 64 72 65 73 73 29 3b 0a 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 20 har,.$address);.........$string.
99a0 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 24 73 70 =.$this->_splitCheck($parts,.$sp
99c0 6c 69 74 5f 63 68 61 72 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 61 20 67 72 6f 75 lit_char);..........//.If.a.grou
99e0 70 2e 2e 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 69 73 5f 67 72 6f 75 70 29 20 7b 0a 20 20 p............if.($is_group).{...
9a00 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 24 73 74 72 69 6e 67 20 64 6f 65 73 20 6e 6f 74 ..........//.If.$string.does.not
9a20 20 63 6f 6e 74 61 69 6e 20 61 20 63 6f 6c 6f 6e 20 6f 75 74 73 69 64 65 20 6f 66 0a 20 20 20 20 .contain.a.colon.outside.of.....
9a40 20 20 20 20 20 20 20 20 2f 2f 20 62 72 61 63 6b 65 74 73 2f 71 75 6f 74 65 73 20 65 74 63 20 74 ........//.brackets/quotes.etc.t
9a60 68 65 6e 20 73 6f 6d 65 74 68 69 6e 67 27 73 20 66 75 62 61 72 2e 0a 0a 20 20 20 20 20 20 20 20 hen.something's.fubar...........
9a80 20 20 20 20 2f 2f 20 46 69 72 73 74 20 63 68 65 63 6b 20 74 68 65 72 65 27 73 20 61 20 63 6f 6c ....//.First.check.there's.a.col
9aa0 6f 6e 20 61 74 20 61 6c 6c 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 70 6f on.at.all:.............if.(strpo
9ac0 73 28 24 73 74 72 69 6e 67 2c 20 27 3a 27 29 20 3d 3d 3d 20 66 61 6c 73 65 29 20 7b 0a 20 20 20 s($string,.':').===.false).{....
9ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 65 72 72 6f 72 20 3d 20 27 49 6e 76 .............$this->error.=.'Inv
9b00 61 6c 69 64 20 61 64 64 72 65 73 73 3a 20 27 20 2e 20 24 73 74 72 69 6e 67 3b 0a 20 20 20 20 20 alid.address:.'...$string;......
9b20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 ...........return.false;........
9b40 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 77 20 63 68 65 63 6b .....}..............//.Now.check
9b60 20 69 74 27 73 20 6f 75 74 73 69 64 65 20 6f 66 20 62 72 61 63 6b 65 74 73 2f 71 75 6f 74 65 73 .it's.outside.of.brackets/quotes
9b80 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 :.............if.(!$this->_split
9ba0 43 68 65 63 6b 28 65 78 70 6c 6f 64 65 28 27 3a 27 2c 20 24 73 74 72 69 6e 67 29 2c 20 27 3a 27 Check(explode(':',.$string),.':'
9bc0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b )).................return.false;
9be0 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57 65 20 6d 75 73 74 20 68 61 76 65 20 61 20 ..............//.We.must.have.a.
9c00 67 72 6f 75 70 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 73 6f 20 69 6e 63 72 65 61 73 65 group.at.this.point,.so.increase
9c20 20 74 68 65 20 63 6f 75 6e 74 65 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 74 68 69 73 2d .the.counter:.............$this-
9c40 3e 6e 75 6d 5f 67 72 6f 75 70 73 2b 2b 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 >num_groups++;.........}........
9c60 20 20 2f 2f 20 24 73 74 72 69 6e 67 20 6e 6f 77 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 66 69 ..//.$string.now.contains.the.fi
9c80 72 73 74 20 66 75 6c 6c 20 61 64 64 72 65 73 73 2f 67 72 6f 75 70 2e 0a 20 20 20 20 20 20 20 20 rst.full.address/group..........
9ca0 2f 2f 20 41 64 64 20 74 6f 20 74 68 65 20 61 64 64 72 65 73 73 65 73 20 61 72 72 61 79 2e 0a 20 //.Add.to.the.addresses.array...
9cc0 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 65 73 5b 5d 20 3d 20 61 72 72 61 .......$this->addresses[].=.arra
9ce0 79 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y(..............................
9d00 20 20 20 20 20 20 27 61 64 64 72 65 73 73 27 20 3d 3e 20 74 72 69 6d 28 24 73 74 72 69 6e 67 29 ......'address'.=>.trim($string)
9d20 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,...............................
9d40 20 20 20 20 20 27 67 72 6f 75 70 27 20 20 20 3d 3e 20 24 69 73 5f 67 72 6f 75 70 0a 20 20 20 20 .....'group'...=>.$is_group.....
9d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 ...............................)
9d80 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 52 65 6d 6f 76 65 20 74 68 65 20 6e 6f 77 20 73 74 6f ;..........//.Remove.the.now.sto
9da0 72 65 64 20 61 64 64 72 65 73 73 20 66 72 6f 6d 20 74 68 65 20 69 6e 69 74 69 61 6c 20 6c 69 6e red.address.from.the.initial.lin
9dc0 65 2c 20 74 68 65 20 2b 31 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 74 6f 20 61 63 63 6f 75 e,.the.+1.........//.is.to.accou
9de0 6e 74 20 66 6f 72 20 74 68 65 20 65 78 70 6c 6f 64 65 20 63 68 61 72 61 63 74 65 72 2e 0a 20 20 nt.for.the.explode.character....
9e00 20 20 20 20 20 20 24 61 64 64 72 65 73 73 20 3d 20 74 72 69 6d 28 73 75 62 73 74 72 28 24 61 64 ......$address.=.trim(substr($ad
9e20 64 72 65 73 73 2c 20 73 74 72 6c 65 6e 28 24 73 74 72 69 6e 67 29 20 2b 20 31 29 29 3b 0a 0a 20 dress,.strlen($string).+.1));...
9e40 20 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 6e 65 78 74 20 63 68 61 72 20 69 73 20 61 20 .......//.If.the.next.char.is.a.
9e60 63 6f 6d 6d 61 20 61 6e 64 20 74 68 69 73 20 77 61 73 20 61 20 67 72 6f 75 70 2c 20 74 68 65 6e comma.and.this.was.a.group,.then
9e80 0a 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 72 65 20 61 72 65 20 6d 6f 72 65 20 61 64 64 72 65 .........//.there.are.more.addre
9ea0 73 73 65 73 2c 20 6f 74 68 65 72 77 69 73 65 2c 20 69 66 20 74 68 65 72 65 20 61 72 65 20 61 6e sses,.otherwise,.if.there.are.an
9ec0 79 20 6d 6f 72 65 0a 20 20 20 20 20 20 20 20 2f 2f 20 63 68 61 72 73 2c 20 74 68 65 6e 20 74 68 y.more.........//.chars,.then.th
9ee0 65 72 65 20 69 73 20 61 6e 6f 74 68 65 72 20 61 64 64 72 65 73 73 2e 0a 20 20 20 20 20 20 20 20 ere.is.another.address..........
9f00 69 66 20 28 24 69 73 5f 67 72 6f 75 70 20 26 26 20 73 75 62 73 74 72 28 24 61 64 64 72 65 73 73 if.($is_group.&&.substr($address
9f20 2c 20 30 2c 20 31 29 20 3d 3d 20 27 2c 27 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 ,.0,.1).==.','){.............$ad
9f40 64 72 65 73 73 20 3d 20 74 72 69 6d 28 73 75 62 73 74 72 28 24 61 64 64 72 65 73 73 2c 20 31 29 dress.=.trim(substr($address,.1)
9f60 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 61 64 64 72 65 73 73 3b 0a );.............return.$address;.
9f80 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20 28 73 74 72 6c 65 6e 28 24 61 64 64 72 65 .........}.elseif.(strlen($addre
9fa0 73 73 29 20 3e 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 61 ss).>.0).{.............return.$a
9fc0 64 64 72 65 73 73 3b 0a 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 ddress;..........}.else.{.......
9fe0 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 27 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 ......return.'';.........}......
a000 20 20 20 20 2f 2f 20 49 66 20 79 6f 75 20 67 6f 74 20 68 65 72 65 20 74 68 65 6e 20 73 6f 6d 65 ....//.If.you.got.here.then.some
a020 74 68 69 6e 67 27 73 20 6f 66 66 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 thing's.off.........return.false
a040 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 68 65 63 6b 73 20 66 ;.....}....../**......*.Checks.f
a060 6f 72 20 61 20 67 72 6f 75 70 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 73 or.a.group.at.the.start.of.the.s
a080 74 72 69 6e 67 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 tring.......*.......*.@access.pr
a0a0 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 61 64 64 72 ivate......*.@param.string.$addr
a0c0 65 73 73 20 54 68 65 20 61 64 64 72 65 73 73 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a ess.The.address.to.check.......*
a0e0 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 57 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 .@return.boolean.Whether.or.not.
a100 74 68 65 72 65 20 69 73 20 61 20 67 72 6f 75 70 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66 there.is.a.group.at.the.start.of
a120 20 74 68 65 20 73 74 72 69 6e 67 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f .the.string.......*/.....functio
a140 6e 20 5f 69 73 47 72 6f 75 70 28 24 61 64 64 72 65 73 73 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 n._isGroup($address).....{......
a160 20 20 20 2f 2f 20 46 69 72 73 74 20 63 6f 6d 6d 61 20 6e 6f 74 20 69 6e 20 71 75 6f 74 65 73 2c ...//.First.comma.not.in.quotes,
a180 20 61 6e 67 6c 65 73 20 6f 72 20 65 73 63 61 70 65 64 3a 0a 20 20 20 20 20 20 20 20 24 70 61 72 .angles.or.escaped:.........$par
a1a0 74 73 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 2c 27 2c 20 24 61 64 64 72 65 73 73 29 3b 0a 20 20 ts..=.explode(',',.$address);...
a1c0 20 20 20 20 20 20 24 73 74 72 69 6e 67 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 ......$string.=.$this->_splitChe
a1e0 63 6b 28 24 70 61 72 74 73 2c 20 27 2c 27 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 77 ck($parts,.',');..........//.Now
a200 20 77 65 20 68 61 76 65 20 74 68 65 20 66 69 72 73 74 20 61 64 64 72 65 73 73 2c 20 77 65 20 63 .we.have.the.first.address,.we.c
a220 61 6e 20 72 65 6c 69 61 62 6c 79 20 63 68 65 63 6b 20 66 6f 72 20 61 0a 20 20 20 20 20 20 20 20 an.reliably.check.for.a.........
a240 2f 2f 20 67 72 6f 75 70 20 62 79 20 73 65 61 72 63 68 69 6e 67 20 66 6f 72 20 61 20 63 6f 6c 6f //.group.by.searching.for.a.colo
a260 6e 20 74 68 61 74 27 73 20 6e 6f 74 20 65 73 63 61 70 65 64 20 6f 72 20 69 6e 0a 20 20 20 20 20 n.that's.not.escaped.or.in......
a280 20 20 20 2f 2f 20 71 75 6f 74 65 73 20 6f 72 20 61 6e 67 6c 65 20 62 72 61 63 6b 65 74 73 2e 0a ...//.quotes.or.angle.brackets..
a2a0 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 75 6e 74 28 24 70 61 72 74 73 20 3d 20 65 78 70 6c 6f ........if.(count($parts.=.explo
a2c0 64 65 28 27 3a 27 2c 20 24 73 74 72 69 6e 67 29 29 20 3e 20 31 29 20 7b 0a 20 20 20 20 20 20 20 de(':',.$string)).>.1).{........
a2e0 20 20 20 20 20 24 73 74 72 69 6e 67 32 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 .....$string2.=.$this->_splitChe
a300 63 6b 28 24 70 61 72 74 73 2c 20 27 3a 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ck($parts,.':');.............ret
a320 75 72 6e 20 28 24 73 74 72 69 6e 67 32 20 21 3d 3d 20 24 73 74 72 69 6e 67 29 3b 0a 20 20 20 20 urn.($string2.!==.$string);.....
a340 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ....}.else.{.............return.
a360 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a false;.........}.....}....../**.
a380 20 20 20 20 20 2a 20 41 20 63 6f 6d 6d 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 77 69 .....*.A.common.function.that.wi
a3a0 6c 6c 20 63 68 65 63 6b 20 61 6e 20 65 78 70 6c 6f 64 65 64 20 73 74 72 69 6e 67 2e 0a 20 20 20 ll.check.an.exploded.string.....
a3c0 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 ..*.......*.@access.private.....
a3e0 20 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 70 61 72 74 73 20 54 68 65 20 65 78 6c 6f 64 .*.@param.array.$parts.The.exlod
a400 65 64 20 73 74 72 69 6e 67 2e 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 ed.string.......*.@param.string.
a420 24 63 68 61 72 20 20 54 68 65 20 63 68 61 72 20 74 68 61 74 20 77 61 73 20 65 78 70 6c 6f 64 65 $char..The.char.that.was.explode
a440 64 20 6f 6e 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 46 61 6c 73 65 d.on.......*.@return.mixed.False
a460 20 69 66 20 74 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20 75 6e 63 6c 6f 73 65 64 .if.the.string.contains.unclosed
a480 20 71 75 6f 74 65 73 2f 62 72 61 63 6b 65 74 73 2c 20 6f 72 20 74 68 65 20 73 74 72 69 6e 67 20 .quotes/brackets,.or.the.string.
a4a0 6f 6e 20 73 75 63 63 65 73 73 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e on.success.......*/.....function
a4c0 20 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 24 63 68 61 72 29 0a 20 20 20 20 ._splitCheck($parts,.$char).....
a4e0 7b 0a 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 20 3d 20 24 70 61 72 74 73 5b 30 5d 3b 0a 0a {.........$string.=.$parts[0];..
a500 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d 20 30 3b 20 24 69 20 3c 20 63 6f 75 6e 74 28 ........for.($i.=.0;.$i.<.count(
a520 24 70 61 72 74 73 29 3b 20 24 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 $parts);.$i++).{.............if.
a540 28 24 74 68 69 73 2d 3e 5f 68 61 73 55 6e 63 6c 6f 73 65 64 51 75 6f 74 65 73 28 24 73 74 72 69 ($this->_hasUnclosedQuotes($stri
a560 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 24 74 68 69 73 2d 3e 5f 68 ng).................||.$this->_h
a580 61 73 55 6e 63 6c 6f 73 65 64 42 72 61 63 6b 65 74 73 28 24 73 74 72 69 6e 67 2c 20 27 3c 3e 27 asUnclosedBrackets($string,.'<>'
a5a0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 24 74 68 69 73 2d 3e 5f 68 61 73 ).................||.$this->_has
a5c0 55 6e 63 6c 6f 73 65 64 42 72 61 63 6b 65 74 73 28 24 73 74 72 69 6e 67 2c 20 27 5b 5d 27 29 0a UnclosedBrackets($string,.'[]').
a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 24 74 68 69 73 2d 3e 5f 68 61 73 55 6e ................||.$this->_hasUn
a600 63 6c 6f 73 65 64 42 72 61 63 6b 65 74 73 28 24 73 74 72 69 6e 67 2c 20 27 28 29 27 29 0a 20 20 closedBrackets($string,.'()')...
a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 73 75 62 73 74 72 28 24 73 74 72 69 6e 67 2c ..............||.substr($string,
a640 20 2d 31 29 20 3d 3d 20 27 5c 5c 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .-1).==.'\\').{.................
a660 69 66 20 28 69 73 73 65 74 28 24 70 61 72 74 73 5b 24 69 20 2b 20 31 5d 29 29 20 7b 0a 20 20 20 if.(isset($parts[$i.+.1])).{....
a680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 20 3d 20 24 73 74 72 69 .................$string.=.$stri
a6a0 6e 67 20 2e 20 24 63 68 61 72 20 2e 20 24 70 61 72 74 73 5b 24 69 20 2b 20 31 5d 3b 0a 20 20 20 ng...$char...$parts[$i.+.1];....
a6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 .............}.else.{...........
a6e0 20 20 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 65 72 72 6f 72 20 3d 20 27 49 6e 76 61 6c 69 ..........$this->error.=.'Invali
a700 64 20 61 64 64 72 65 73 73 20 73 70 65 63 2e 20 55 6e 63 6c 6f 73 65 64 20 62 72 61 63 6b 65 74 d.address.spec..Unclosed.bracket
a720 20 6f 72 20 71 75 6f 74 65 73 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .or.quotes';....................
a740 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d .return.false;.................}
a760 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 .............}.else.{...........
a780 20 20 20 20 20 20 24 74 68 69 73 2d 3e 69 6e 64 65 78 20 3d 20 24 69 3b 0a 20 20 20 20 20 20 20 ......$this->index.=.$i;........
a7a0 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 .........break;.............}...
a7c0 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 73 74 72 69 6e 67 3b ......}..........return.$string;
a7e0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 68 65 63 6b 73 20 69 66 .....}....../**......*.Checks.if
a800 20 61 20 73 74 72 69 6e 67 20 68 61 73 20 61 6e 20 75 6e 63 6c 6f 73 65 64 20 71 75 6f 74 65 73 .a.string.has.an.unclosed.quotes
a820 20 6f 72 20 6e 6f 74 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 .or.not.......*.......*.@access.
a840 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 73 74 private......*.@param.string.$st
a860 72 69 6e 67 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a ring.The.string.to.check.......*
a880 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 54 72 75 65 20 69 66 20 74 68 65 72 65 20 61 .@return.boolean.True.if.there.a
a8a0 72 65 20 75 6e 63 6c 6f 73 65 64 20 71 75 6f 74 65 73 20 69 6e 73 69 64 65 20 74 68 65 20 73 74 re.unclosed.quotes.inside.the.st
a8c0 72 69 6e 67 2c 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 ring,.false.otherwise.......*/..
a8e0 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 68 61 73 55 6e 63 6c 6f 73 65 64 51 75 6f 74 65 73 28 24 ...function._hasUnclosedQuotes($
a900 73 74 72 69 6e 67 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 20 20 20 string).....{.........$string...
a920 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 22 27 2c 20 24 73 74 72 69 6e 67 29 3b 0a 20 20 20 20 20 ..=.explode('"',.$string);......
a940 20 20 20 24 73 74 72 69 6e 67 5f 63 6e 74 20 3d 20 63 6f 75 6e 74 28 24 73 74 72 69 6e 67 29 3b ...$string_cnt.=.count($string);
a960 0a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d 20 30 3b 20 24 69 20 3c 20 28 63 6f 75 ..........for.($i.=.0;.$i.<.(cou
a980 6e 74 28 24 73 74 72 69 6e 67 29 20 2d 20 31 29 3b 20 24 69 2b 2b 29 0a 20 20 20 20 20 20 20 20 nt($string).-.1);.$i++).........
a9a0 20 20 20 20 69 66 20 28 73 75 62 73 74 72 28 24 73 74 72 69 6e 67 5b 24 69 5d 2c 20 2d 31 29 20 ....if.(substr($string[$i],.-1).
a9c0 3d 3d 20 27 5c 5c 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 ==.'\\').................$string
a9e0 5f 63 6e 74 2d 2d 3b 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 24 73 74 72 69 6e 67 _cnt--;..........return.($string
aa00 5f 63 6e 74 20 25 20 32 20 3d 3d 3d 20 30 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a _cnt.%.2.===.0);.....}....../**.
aa20 20 20 20 20 20 2a 20 43 68 65 63 6b 73 20 69 66 20 61 20 73 74 72 69 6e 67 20 68 61 73 20 61 6e .....*.Checks.if.a.string.has.an
aa40 20 75 6e 63 6c 6f 73 65 64 20 62 72 61 63 6b 65 74 73 20 6f 72 20 6e 6f 74 2e 20 49 4d 50 4f 52 .unclosed.brackets.or.not..IMPOR
aa60 54 41 4e 54 3a 0a 20 20 20 20 20 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 68 61 6e 64 6c TANT:......*.This.function.handl
aa80 65 73 20 62 6f 74 68 20 61 6e 67 6c 65 20 62 72 61 63 6b 65 74 73 20 61 6e 64 20 73 71 75 61 72 es.both.angle.brackets.and.squar
aaa0 65 20 62 72 61 63 6b 65 74 73 3b 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 e.brackets;......*.......*.@acce
aac0 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 ss.private......*.@param.string.
aae0 24 73 74 72 69 6e 67 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 $string.The.string.to.check.....
ab00 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 63 68 61 72 73 20 20 54 68 65 20 63 68 ..*.@param.string.$chars..The.ch
ab20 61 72 61 63 74 65 72 73 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 2e 0a 20 20 20 20 20 2a 20 40 72 aracters.to.check.for.......*.@r
ab40 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 54 72 75 65 20 69 66 20 74 68 65 72 65 20 61 72 65 20 eturn.boolean.True.if.there.are.
ab60 75 6e 63 6c 6f 73 65 64 20 62 72 61 63 6b 65 74 73 20 69 6e 73 69 64 65 20 74 68 65 20 73 74 72 unclosed.brackets.inside.the.str
ab80 69 6e 67 2c 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 ing,.false.otherwise.......*/...
aba0 20 20 66 75 6e 63 74 69 6f 6e 20 5f 68 61 73 55 6e 63 6c 6f 73 65 64 42 72 61 63 6b 65 74 73 28 ..function._hasUnclosedBrackets(
abc0 24 73 74 72 69 6e 67 2c 20 24 63 68 61 72 73 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 $string,.$chars).....{.........$
abe0 6e 75 6d 5f 61 6e 67 6c 65 5f 73 74 61 72 74 20 3d 20 73 75 62 73 74 72 5f 63 6f 75 6e 74 28 24 num_angle_start.=.substr_count($
ac00 73 74 72 69 6e 67 2c 20 24 63 68 61 72 73 5b 30 5d 29 3b 0a 20 20 20 20 20 20 20 20 24 6e 75 6d string,.$chars[0]);.........$num
ac20 5f 61 6e 67 6c 65 5f 65 6e 64 20 20 20 3d 20 73 75 62 73 74 72 5f 63 6f 75 6e 74 28 24 73 74 72 _angle_end...=.substr_count($str
ac40 69 6e 67 2c 20 24 63 68 61 72 73 5b 31 5d 29 3b 0a 0a 20 20 20 20 20 20 20 20 24 74 68 69 73 2d ing,.$chars[1]);..........$this-
ac60 3e 5f 68 61 73 55 6e 63 6c 6f 73 65 64 42 72 61 63 6b 65 74 73 53 75 62 28 24 73 74 72 69 6e 67 >_hasUnclosedBracketsSub($string
ac80 2c 20 24 6e 75 6d 5f 61 6e 67 6c 65 5f 73 74 61 72 74 2c 20 24 63 68 61 72 73 5b 30 5d 29 3b 0a ,.$num_angle_start,.$chars[0]);.
aca0 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 5f 68 61 73 55 6e 63 6c 6f 73 65 64 42 72 61 63 6b ........$this->_hasUnclosedBrack
acc0 65 74 73 53 75 62 28 24 73 74 72 69 6e 67 2c 20 24 6e 75 6d 5f 61 6e 67 6c 65 5f 65 6e 64 2c 20 etsSub($string,.$num_angle_end,.
ace0 24 63 68 61 72 73 5b 31 5d 29 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 6e 75 6d 5f 61 6e $chars[1]);..........if.($num_an
ad00 67 6c 65 5f 73 74 61 72 74 20 3c 20 24 6e 75 6d 5f 61 6e 67 6c 65 5f 65 6e 64 29 20 7b 0a 20 20 gle_start.<.$num_angle_end).{...
ad20 20 20 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 65 72 72 6f 72 20 3d 20 27 49 6e 76 61 6c 69 ..........$this->error.=.'Invali
ad40 64 20 61 64 64 72 65 73 73 20 73 70 65 63 2e 20 55 6e 6d 61 74 63 68 65 64 20 71 75 6f 74 65 20 d.address.spec..Unmatched.quote.
ad60 6f 72 20 62 72 61 63 6b 65 74 20 28 27 20 2e 20 24 63 68 61 72 73 20 2e 20 27 29 27 3b 0a 20 20 or.bracket.('...$chars...')';...
ad80 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 ..........return.false;.........
ada0 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 24 6e 75 }.else.{.............return.($nu
adc0 6d 5f 61 6e 67 6c 65 5f 73 74 61 72 74 20 3e 20 24 6e 75 6d 5f 61 6e 67 6c 65 5f 65 6e 64 29 3b m_angle_start.>.$num_angle_end);
ade0 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a .........}.....}....../**......*
ae00 20 53 75 62 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 .Sub.function.that.is.used.only.
ae20 62 79 20 68 61 73 55 6e 63 6c 6f 73 65 64 42 72 61 63 6b 65 74 73 28 29 2e 0a 20 20 20 20 20 2a by.hasUnclosedBrackets().......*
ae40 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 .......*.@access.private......*.
ae60 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 73 74 72 69 6e 67 20 54 68 65 20 73 74 72 69 6e 67 @param.string.$string.The.string
ae80 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 69 6e 74 65 67 65 72 .to.check.......*.@param.integer
aea0 20 26 24 6e 75 6d 20 20 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6f 63 63 75 72 65 6e 63 .&$num....The.number.of.occurenc
aec0 65 73 2e 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 63 68 61 72 20 20 es.......*.@param.string.$char..
aee0 20 54 68 65 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 63 6f 75 6e 74 2e 0a 20 20 20 20 20 2a 20 .The.character.to.count.......*.
af00 40 72 65 74 75 72 6e 20 69 6e 74 65 67 65 72 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6f 63 @return.integer.The.number.of.oc
af20 63 75 72 65 6e 63 65 73 20 6f 66 20 24 63 68 61 72 20 69 6e 20 24 73 74 72 69 6e 67 2c 20 61 64 curences.of.$char.in.$string,.ad
af40 6a 75 73 74 65 64 20 66 6f 72 20 62 61 63 6b 73 6c 61 73 68 65 73 2e 0a 20 20 20 20 20 2a 2f 0a justed.for.backslashes.......*/.
af60 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 68 61 73 55 6e 63 6c 6f 73 65 64 42 72 61 63 6b 65 74 ....function._hasUnclosedBracket
af80 73 53 75 62 28 24 73 74 72 69 6e 67 2c 20 26 24 6e 75 6d 2c 20 24 63 68 61 72 29 0a 20 20 20 20 sSub($string,.&$num,.$char).....
afa0 7b 0a 20 20 20 20 20 20 20 20 24 70 61 72 74 73 20 3d 20 65 78 70 6c 6f 64 65 28 24 63 68 61 72 {.........$parts.=.explode($char
afc0 2c 20 24 73 74 72 69 6e 67 29 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d 20 30 3b ,.$string);.........for.($i.=.0;
afe0 20 24 69 20 3c 20 63 6f 75 6e 74 28 24 70 61 72 74 73 29 3b 20 24 69 2b 2b 29 7b 0a 20 20 20 20 .$i.<.count($parts);.$i++){.....
b000 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 73 74 72 28 24 70 61 72 74 73 5b 24 69 5d 2c 20 2d ........if.(substr($parts[$i],.-
b020 31 29 20 3d 3d 20 27 5c 5c 27 20 7c 7c 20 24 74 68 69 73 2d 3e 5f 68 61 73 55 6e 63 6c 6f 73 65 1).==.'\\'.||.$this->_hasUnclose
b040 64 51 75 6f 74 65 73 28 24 70 61 72 74 73 5b 24 69 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 dQuotes($parts[$i]))............
b060 20 20 20 20 20 24 6e 75 6d 2d 2d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 .....$num--;.............if.(iss
b080 65 74 28 24 70 61 72 74 73 5b 24 69 20 2b 20 31 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 et($parts[$i.+.1])).............
b0a0 20 20 20 20 24 70 61 72 74 73 5b 24 69 20 2b 20 31 5d 20 3d 20 24 70 61 72 74 73 5b 24 69 5d 20 ....$parts[$i.+.1].=.$parts[$i].
b0c0 2e 20 24 63 68 61 72 20 2e 20 24 70 61 72 74 73 5b 24 69 20 2b 20 31 5d 3b 0a 20 20 20 20 20 20 ..$char...$parts[$i.+.1];.......
b0e0 20 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 6e 75 6d ..}..................return.$num
b100 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f 6e ;.....}....../**......*.Function
b120 20 74 6f 20 62 65 67 69 6e 20 63 68 65 63 6b 69 6e 67 20 74 68 65 20 61 64 64 72 65 73 73 2e 0a .to.begin.checking.the.address..
b140 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 .....*......*.@access.private...
b160 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 61 64 64 72 65 73 73 20 54 68 65 20 ...*.@param.string.$address.The.
b180 61 64 64 72 65 73 73 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 address.to.validate.......*.@ret
b1a0 75 72 6e 20 6d 69 78 65 64 20 46 61 6c 73 65 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 6f 72 20 61 urn.mixed.False.on.failure,.or.a
b1c0 20 73 74 72 75 63 74 75 72 65 64 20 61 72 72 61 79 20 6f 66 20 61 64 64 72 65 73 73 20 69 6e 66 .structured.array.of.address.inf
b1e0 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 73 75 63 63 65 73 73 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 ormation.on.success.......*/....
b200 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 41 64 64 72 65 73 73 28 24 61 64 64 72 .function._validateAddress($addr
b220 65 73 73 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 69 73 5f 67 72 6f 75 70 20 3d 20 66 ess).....{.........$is_group.=.f
b240 61 6c 73 65 3b 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 61 64 64 72 65 73 73 5b 27 67 72 6f alse;..........if.($address['gro
b260 75 70 27 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 69 73 5f 67 72 6f 75 70 20 3d 20 up']).{.............$is_group.=.
b280 74 72 75 65 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 47 65 74 20 74 68 65 20 67 72 true;..............//.Get.the.gr
b2a0 6f 75 70 20 70 61 72 74 20 6f 66 20 74 68 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 oup.part.of.the.name............
b2c0 20 24 70 61 72 74 73 20 20 20 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 3a 27 2c 20 24 61 64 64 72 .$parts.....=.explode(':',.$addr
b2e0 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 67 72 ess['address']);.............$gr
b300 6f 75 70 6e 61 6d 65 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 oupname.=.$this->_splitCheck($pa
b320 72 74 73 2c 20 27 3a 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 75 63 74 75 72 rts,.':');.............$structur
b340 65 20 3d 20 61 72 72 61 79 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 6e 64 e.=.array();..............//.And
b360 20 76 61 6c 69 64 61 74 65 20 74 68 65 20 67 72 6f 75 70 20 70 61 72 74 20 6f 66 20 74 68 65 20 .validate.the.group.part.of.the.
b380 6e 61 6d 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 24 74 68 69 73 2d 3e 5f 76 name..............if.(!$this->_v
b3a0 61 6c 69 64 61 74 65 50 68 72 61 73 65 28 24 67 72 6f 75 70 6e 61 6d 65 29 29 7b 0a 20 20 20 20 alidatePhrase($groupname)){.....
b3c0 20 20 20 20 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 65 72 72 6f 72 20 3d 20 27 47 72 6f 75 ............$this->error.=.'Grou
b3e0 70 20 6e 61 6d 65 20 64 69 64 20 6e 6f 74 20 76 61 6c 69 64 61 74 65 2e 27 3b 0a 20 20 20 20 20 p.name.did.not.validate.';......
b400 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 ...........return.false;........
b420 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .....}.else.{.................//
b440 20 44 6f 6e 27 74 20 69 6e 63 6c 75 64 65 20 67 72 6f 75 70 73 20 69 66 20 77 65 20 61 72 65 20 .Don't.include.groups.if.we.are.
b460 6e 6f 74 20 6e 65 73 74 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 74 not.nesting.................//.t
b480 68 65 6d 2e 20 54 68 69 73 20 61 76 6f 69 64 73 20 72 65 74 75 72 6e 69 6e 67 20 69 6e 76 61 6c hem..This.avoids.returning.inval
b4a0 69 64 20 61 64 64 72 65 73 73 65 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 id.addresses..................if
b4c0 20 28 24 74 68 69 73 2d 3e 6e 65 73 74 47 72 6f 75 70 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 .($this->nestGroups).{..........
b4e0 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 6e 65 77 20 73 74 64 43 ...........$structure.=.new.stdC
b500 6c 61 73 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 75 63 lass;.....................$struc
b520 74 75 72 65 2d 3e 67 72 6f 75 70 6e 61 6d 65 20 3d 20 24 67 72 6f 75 70 6e 61 6d 65 3b 0a 20 20 ture->groupname.=.$groupname;...
b540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 ..............}.............}...
b560 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 20 3d ...........$address['address'].=
b580 20 6c 74 72 69 6d 28 73 75 62 73 74 72 28 24 61 64 64 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 .ltrim(substr($address['address'
b5a0 5d 2c 20 73 74 72 6c 65 6e 28 24 67 72 6f 75 70 6e 61 6d 65 20 2e 20 27 3a 27 29 29 29 3b 0a 20 ],.strlen($groupname...':')));..
b5c0 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 61 20 67 72 6f 75 70 20 .......}..........//.If.a.group.
b5e0 74 68 65 6e 20 73 70 6c 69 74 20 6f 6e 20 63 6f 6d 6d 61 20 61 6e 64 20 70 75 74 20 69 6e 74 6f then.split.on.comma.and.put.into
b600 20 61 6e 20 61 72 72 61 79 2e 0a 20 20 20 20 20 20 20 20 2f 2f 20 4f 74 68 65 72 77 69 73 65 2c .an.array..........//.Otherwise,
b620 20 4a 75 73 74 20 70 75 74 20 74 68 65 20 77 68 6f 6c 65 20 61 64 64 72 65 73 73 20 69 6e 20 61 .Just.put.the.whole.address.in.a
b640 6e 20 61 72 72 61 79 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 69 73 5f 67 72 6f 75 70 29 20 n.array..........if.($is_group).
b660 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 73 74 72 6c 65 6e 28 24 61 64 64 {.............while.(strlen($add
b680 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 29 20 3e 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 ress['address']).>.0).{.........
b6a0 20 20 20 20 20 20 20 20 24 70 61 72 74 73 20 20 20 20 20 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 ........$parts.......=.explode('
b6c0 2c 27 2c 20 24 61 64 64 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 29 3b 0a 20 20 20 20 20 20 ,',.$address['address']);.......
b6e0 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 65 73 73 65 73 5b 5d 20 3d 20 24 74 68 69 73 2d 3e ..........$addresses[].=.$this->
b700 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 27 2c 27 29 3b 0a 20 20 20 20 20 20 _splitCheck($parts,.',');.......
b720 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 20 3d 20 ..........$address['address'].=.
b740 74 72 69 6d 28 73 75 62 73 74 72 28 24 61 64 64 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 2c trim(substr($address['address'],
b760 20 73 74 72 6c 65 6e 28 65 6e 64 28 24 61 64 64 72 65 73 73 65 73 29 20 2e 20 27 2c 27 29 29 29 .strlen(end($addresses)...',')))
b780 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b ;.............}.........}.else.{
b7a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 65 73 73 65 73 5b 5d 20 3d 20 24 61 64 64 .............$addresses[].=.$add
b7c0 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 ress['address'];.........}......
b7e0 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 74 68 61 74 20 24 61 64 64 72 65 73 73 65 73 20 69 73 20 ....//.Check.that.$addresses.is.
b800 73 65 74 2c 20 69 66 20 61 64 64 72 65 73 73 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 20 20 20 set,.if.address.like.this:......
b820 20 20 20 2f 2f 20 47 72 6f 75 70 6e 61 6d 65 3a 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 ...//.Groupname:;.........//.The
b840 6e 20 65 72 72 6f 72 73 20 77 65 72 65 20 61 70 70 65 61 72 69 6e 67 2e 0a 20 20 20 20 20 20 20 n.errors.were.appearing.........
b860 20 69 66 20 28 21 69 73 73 65 74 28 24 61 64 64 72 65 73 73 65 73 29 29 7b 0a 20 20 20 20 20 20 .if.(!isset($addresses)){.......
b880 20 20 20 20 20 20 24 74 68 69 73 2d 3e 65 72 72 6f 72 20 3d 20 27 45 6d 70 74 79 20 67 72 6f 75 ......$this->error.=.'Empty.grou
b8a0 70 2e 27 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 p.';.............return.false;..
b8c0 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d 20 30 3b 20 24 .......}..........for.($i.=.0;.$
b8e0 69 20 3c 20 63 6f 75 6e 74 28 24 61 64 64 72 65 73 73 65 73 29 3b 20 24 69 2b 2b 29 20 7b 0a 20 i.<.count($addresses);.$i++).{..
b900 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 65 73 73 65 73 5b 24 69 5d 20 3d 20 74 72 69 6d ...........$addresses[$i].=.trim
b920 28 24 61 64 64 72 65 73 73 65 73 5b 24 69 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 ($addresses[$i]);.........}.....
b940 20 20 20 20 20 2f 2f 20 56 61 6c 69 64 61 74 65 20 65 61 63 68 20 6d 61 69 6c 62 6f 78 2e 0a 20 .....//.Validate.each.mailbox...
b960 20 20 20 20 20 20 20 2f 2f 20 46 6f 72 6d 61 74 20 63 6f 75 6c 64 20 62 65 20 6f 6e 65 20 6f 66 .......//.Format.could.be.one.of
b980 3a 20 6e 61 6d 65 20 3c 67 65 65 7a 65 72 40 64 6f 6d 61 69 6e 2e 63 6f 6d 3e 0a 20 20 20 20 20 :.name.<geezer@domain.com>......
b9a0 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 ...//.........................ge
b9c0 65 7a 65 72 40 64 6f 6d 61 69 6e 2e 63 6f 6d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 ezer@domain.com.........//......
b9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 65 7a 65 72 0a 20 20 20 20 20 20 ...................geezer.......
ba00 20 20 2f 2f 20 2e 2e 2e 20 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 66 6f 72 6d 61 74 20 76 61 6c ..//.....or.any.other.format.val
ba20 69 64 20 62 79 20 52 46 43 20 38 32 32 2e 0a 20 20 20 20 20 20 20 20 61 72 72 61 79 5f 77 61 6c id.by.RFC.822..........array_wal
ba40 6b 28 24 61 64 64 72 65 73 73 65 73 2c 20 61 72 72 61 79 28 24 74 68 69 73 2c 20 27 76 61 6c 69 k($addresses,.array($this,.'vali
ba60 64 61 74 65 4d 61 69 6c 62 6f 78 27 29 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 65 73 74 dateMailbox'));..........//.Nest
ba80 65 64 20 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 74 68 69 73 2d 3e 6e 65 73 ed.format.........if.($this->nes
baa0 74 47 72 6f 75 70 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 69 73 5f 67 tGroups).{.............if.($is_g
bac0 72 6f 75 70 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 75 63 74 75 roup).{.................$structu
bae0 72 65 2d 3e 61 64 64 72 65 73 73 65 73 20 3d 20 24 61 64 64 72 65 73 73 65 73 3b 0a 20 20 20 20 re->addresses.=.$addresses;.....
bb00 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........}.else.{................
bb20 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 24 61 64 64 72 65 73 73 65 73 5b 30 5d 3b 0a 20 20 20 .$structure.=.$addresses[0];....
bb40 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 46 6c 61 74 20 66 6f 72 6d .........}..........//.Flat.form
bb60 61 74 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 at.........}.else.{.............
bb80 69 66 20 28 24 69 73 5f 67 72 6f 75 70 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.($is_group).{................
bba0 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 61 72 72 61 79 5f 6d 65 72 67 65 28 24 73 74 72 75 63 .$structure.=.array_merge($struc
bbc0 74 75 72 65 2c 20 24 61 64 64 72 65 73 73 65 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ture,.$addresses);.............}
bbe0 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 75 63 74 75 .else.{.................$structu
bc00 72 65 20 3d 20 24 61 64 64 72 65 73 73 65 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 re.=.$addresses;.............}..
bc20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 73 74 72 75 63 74 .......}..........return.$struct
bc40 75 72 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 ure;.....}....../**......*.Funct
bc60 69 6f 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 20 70 68 72 61 73 65 2e 0a 20 20 20 20 20 2a ion.to.validate.a.phrase.......*
bc80 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 ......*.@access.private......*.@
bca0 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 70 68 72 61 73 65 20 54 68 65 20 70 68 72 61 73 65 20 param.string.$phrase.The.phrase.
bcc0 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e to.check.......*.@return.boolean
bce0 20 53 75 63 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 .Success.or.failure.......*/....
bd00 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 50 68 72 61 73 65 28 24 70 68 72 61 73 .function._validatePhrase($phras
bd20 65 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 70 6c 69 74 73 20 6f 6e 20 6f 6e e).....{.........//.Splits.on.on
bd40 65 20 6f 72 20 6d 6f 72 65 20 54 61 62 20 6f 72 20 73 70 61 63 65 2e 0a 20 20 20 20 20 20 20 20 e.or.more.Tab.or.space..........
bd60 24 70 61 72 74 73 20 3d 20 70 72 65 67 5f 73 70 6c 69 74 28 27 2f 5b 20 5c 5c 78 30 39 5d 2b 2f $parts.=.preg_split('/[.\\x09]+/
bd80 27 2c 20 24 70 68 72 61 73 65 2c 20 2d 31 2c 20 50 52 45 47 5f 53 50 4c 49 54 5f 4e 4f 5f 45 4d ',.$phrase,.-1,.PREG_SPLIT_NO_EM
bda0 50 54 59 29 3b 0a 0a 20 20 20 20 20 20 20 20 24 70 68 72 61 73 65 5f 70 61 72 74 73 20 3d 20 61 PTY);..........$phrase_parts.=.a
bdc0 72 72 61 79 28 29 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 63 6f 75 6e 74 28 24 70 61 rray();.........while.(count($pa
bde0 72 74 73 29 20 3e 20 30 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70 68 72 61 73 65 5f 70 rts).>.0){.............$phrase_p
be00 61 72 74 73 5b 5d 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 arts[].=.$this->_splitCheck($par
be20 74 73 2c 20 27 20 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d 20 ts,.'.');.............for.($i.=.
be40 30 3b 20 24 69 20 3c 20 24 74 68 69 73 2d 3e 69 6e 64 65 78 20 2b 20 31 3b 20 24 69 2b 2b 29 0a 0;.$i.<.$this->index.+.1;.$i++).
be60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 72 61 79 5f 73 68 69 66 74 28 24 70 61 72 ................array_shift($par
be80 74 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 ts);.........}..........for.($i.
bea0 3d 20 30 3b 20 24 69 20 3c 20 63 6f 75 6e 74 28 24 70 68 72 61 73 65 5f 70 61 72 74 73 29 3b 20 =.0;.$i.<.count($phrase_parts);.
bec0 24 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 71 75 6f 74 65 64 $i++).{.............//.If.quoted
bee0 20 73 74 72 69 6e 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 73 74 72 28 .string:.............if.(substr(
bf00 24 70 68 72 61 73 65 5f 70 61 72 74 73 5b 24 69 5d 2c 20 30 2c 20 31 29 20 3d 3d 20 27 22 27 29 $phrase_parts[$i],.0,.1).==.'"')
bf20 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 24 74 68 69 73 2d 3e 5f .{.................if.(!$this->_
bf40 76 61 6c 69 64 61 74 65 51 75 6f 74 65 64 53 74 72 69 6e 67 28 24 70 68 72 61 73 65 5f 70 61 72 validateQuotedString($phrase_par
bf60 74 73 5b 24 69 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ts[$i])).....................ret
bf80 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 urn.false;.................conti
bfa0 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 nue;.............}..............
bfc0 2f 2f 20 4f 74 68 65 72 77 69 73 65 20 69 74 27 73 20 61 6e 20 61 74 6f 6d 3a 0a 20 20 20 20 20 //.Otherwise.it's.an.atom:......
bfe0 20 20 20 20 20 20 20 69 66 20 28 21 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 41 74 6f 6d .......if.(!$this->_validateAtom
c000 28 24 70 68 72 61 73 65 5f 70 61 72 74 73 5b 24 69 5d 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 ($phrase_parts[$i])).return.fals
c020 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 e;.........}..........return.tru
c040 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f e;.....}....../**......*.Functio
c060 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 6e 20 61 74 6f 6d 20 77 68 69 63 68 20 66 72 6f 6d n.to.validate.an.atom.which.from
c080 20 72 66 63 38 32 32 20 69 73 3a 0a 20 20 20 20 20 2a 20 61 74 6f 6d 20 3d 20 31 2a 3c 61 6e 79 .rfc822.is:......*.atom.=.1*<any
c0a0 20 43 48 41 52 20 65 78 63 65 70 74 20 73 70 65 63 69 61 6c 73 2c 20 53 50 41 43 45 20 61 6e 64 .CHAR.except.specials,.SPACE.and
c0c0 20 43 54 4c 73 3e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 49 66 20 76 61 6c 69 64 61 74 .CTLs>......*.......*.If.validat
c0e0 69 6f 6e 20 28 24 74 68 69 73 2d 3e 76 61 6c 69 64 61 74 65 29 20 68 61 73 20 62 65 65 6e 20 74 ion.($this->validate).has.been.t
c100 75 72 6e 65 64 20 6f 66 66 2c 20 74 68 65 6e 0a 20 20 20 20 20 2a 20 76 61 6c 69 64 61 74 65 41 urned.off,.then......*.validateA
c120 74 6f 6d 28 29 20 64 6f 65 73 6e 27 74 20 61 63 74 75 61 6c 6c 79 20 63 68 65 63 6b 20 61 6e 79 tom().doesn't.actually.check.any
c140 74 68 69 6e 67 2e 20 54 68 69 73 20 69 73 20 73 6f 20 74 68 61 74 20 79 6f 75 0a 20 20 20 20 20 thing..This.is.so.that.you......
c160 2a 20 63 61 6e 20 73 70 6c 69 74 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 72 65 73 73 65 73 20 *.can.split.a.list.of.addresses.
c180 75 70 20 62 65 66 6f 72 65 20 65 6e 63 6f 64 69 6e 67 20 70 65 72 73 6f 6e 61 6c 20 6e 61 6d 65 up.before.encoding.personal.name
c1a0 73 0a 20 20 20 20 20 2a 20 28 75 6d 6c 61 75 74 73 2c 20 65 74 63 2e 29 2c 20 66 6f 72 20 65 78 s......*.(umlauts,.etc.),.for.ex
c1c0 61 6d 70 6c 65 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 ample.......*.......*.@access.pr
c1e0 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 61 74 6f 6d ivate......*.@param.string.$atom
c200 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 40 72 65 .The.string.to.check.......*.@re
c220 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 53 75 63 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e turn.boolean.Success.or.failure.
c240 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 41 ......*/.....function._validateA
c260 74 6f 6d 28 24 61 74 6f 6d 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 24 74 tom($atom).....{.........if.(!$t
c280 68 69 73 2d 3e 76 61 6c 69 64 61 74 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 his->validate).{.............//.
c2a0 56 61 6c 69 64 61 74 69 6f 6e 20 68 61 73 20 62 65 65 6e 20 74 75 72 6e 65 64 20 6f 66 66 3b 20 Validation.has.been.turned.off;.
c2c0 61 73 73 75 6d 65 20 74 68 65 20 61 74 6f 6d 20 69 73 20 6f 6b 61 79 2e 0a 20 20 20 20 20 20 20 assume.the.atom.is.okay.........
c2e0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 .....return.true;.........}.....
c300 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 66 6f 72 20 61 6e 79 20 63 68 61 72 20 66 72 6f 6d 20 .....//.Check.for.any.char.from.
c320 41 53 43 49 49 20 30 20 2d 20 41 53 43 49 49 20 31 32 37 0a 20 20 20 20 20 20 20 20 69 66 20 28 ASCII.0.-.ASCII.127.........if.(
c340 21 70 72 65 67 5f 6d 61 74 63 68 28 27 2f 5e 5b 5c 5c 78 30 30 2d 5c 5c 78 37 45 5d 2b 24 2f 69 !preg_match('/^[\\x00-\\x7E]+$/i
c360 27 2c 20 24 61 74 6f 6d 2c 20 24 6d 61 74 63 68 65 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ',.$atom,.$matches)).{..........
c380 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 ...return.false;.........}......
c3a0 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 66 6f 72 20 73 70 65 63 69 61 6c 73 3a 0a 20 20 20 20 20 ....//.Check.for.specials:......
c3c0 20 20 20 69 66 20 28 70 72 65 67 5f 6d 61 74 63 68 28 27 2f 5b 5d 5b 28 29 3c 3e 40 2c 3b 5c 5c ...if.(preg_match('/[][()<>@,;\\
c3e0 3a 22 2e 20 5d 2f 27 2c 20 24 61 74 6f 6d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 :"..]/',.$atom)).{.............r
c400 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 eturn.false;.........}..........
c420 2f 2f 20 43 68 65 63 6b 20 66 6f 72 20 63 6f 6e 74 72 6f 6c 20 63 68 61 72 61 63 74 65 72 73 20 //.Check.for.control.characters.
c440 28 41 53 43 49 49 20 30 2d 33 31 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 28 70 72 65 67 5f 6d (ASCII.0-31):.........if.(preg_m
c460 61 74 63 68 28 27 2f 5b 5c 5c 78 30 30 2d 5c 5c 78 31 46 5d 2b 2f 27 2c 20 24 61 74 6f 6d 29 29 atch('/[\\x00-\\x1F]+/',.$atom))
c480 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 .{.............return.false;....
c4a0 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 .....}..........return.true;....
c4c0 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f 6e 20 74 6f 20 76 .}....../**......*.Function.to.v
c4e0 61 6c 69 64 61 74 65 20 71 75 6f 74 65 64 20 73 74 72 69 6e 67 2c 20 77 68 69 63 68 20 69 73 3a alidate.quoted.string,.which.is:
c500 0a 20 20 20 20 20 2a 20 71 75 6f 74 65 64 2d 73 74 72 69 6e 67 20 3d 20 3c 22 3e 20 2a 28 71 74 ......*.quoted-string.=.<">.*(qt
c520 65 78 74 2f 71 75 6f 74 65 64 2d 70 61 69 72 29 20 3c 22 3e 0a 20 20 20 20 20 2a 20 0a 20 20 20 ext/quoted-pair).<">......*.....
c540 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 ..*.@access.private......*.@para
c560 6d 20 73 74 72 69 6e 67 20 24 71 73 74 72 69 6e 67 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 m.string.$qstring.The.string.to.
c580 63 68 65 63 6b 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 53 75 63 check......*.@return.boolean.Suc
c5a0 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e cess.or.failure.......*/.....fun
c5c0 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 51 75 6f 74 65 64 53 74 72 69 6e 67 28 24 71 73 74 ction._validateQuotedString($qst
c5e0 72 69 6e 67 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 4c 65 61 64 69 6e 67 20 61 ring).....{.........//.Leading.a
c600 6e 64 20 74 72 61 69 6c 69 6e 67 20 22 0a 20 20 20 20 20 20 20 20 24 71 73 74 72 69 6e 67 20 3d nd.trailing.".........$qstring.=
c620 20 73 75 62 73 74 72 28 24 71 73 74 72 69 6e 67 2c 20 31 2c 20 2d 31 29 3b 0a 0a 20 20 20 20 20 .substr($qstring,.1,.-1);.......
c640 20 20 20 2f 2f 20 50 65 72 66 6f 72 6d 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 20 20 20 72 65 74 ...//.Perform.check..........ret
c660 75 72 6e 20 21 28 70 72 65 67 5f 6d 61 74 63 68 28 27 2f 28 2e 29 5b 5c 78 30 44 5c 5c 5c 5c 22 urn.!(preg_match('/(.)[\x0D\\\\"
c680 5d 2f 27 2c 20 24 71 73 74 72 69 6e 67 2c 20 24 6d 61 74 63 68 65 73 29 20 26 26 20 24 6d 61 74 ]/',.$qstring,.$matches).&&.$mat
c6a0 63 68 65 73 5b 31 5d 20 21 3d 20 27 5c 5c 27 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a ches[1].!=.'\\');.....}....../**
c6c0 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 20 6d ......*.Function.to.validate.a.m
c6e0 61 69 6c 62 6f 78 2c 20 77 68 69 63 68 20 69 73 3a 0a 20 20 20 20 20 2a 20 6d 61 69 6c 62 6f 78 ailbox,.which.is:......*.mailbox
c700 20 3d 20 20 20 61 64 64 72 2d 73 70 65 63 20 20 20 20 20 20 20 20 20 3b 20 73 69 6d 70 6c 65 20 .=...addr-spec.........;.simple.
c720 61 64 64 72 65 73 73 0a 20 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 2f 20 70 68 72 61 73 address......*.........../.phras
c740 65 20 72 6f 75 74 65 2d 61 64 64 72 20 3b 20 6e 61 6d 65 20 61 6e 64 20 72 6f 75 74 65 2d 61 64 e.route-addr.;.name.and.route-ad
c760 64 72 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 dr......*.......*.@access.public
c780 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 26 24 6d 61 69 6c 62 6f 78 20 ......*.@param.string.&$mailbox.
c7a0 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 The.string.to.check.......*.@ret
c7c0 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 53 75 63 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a urn.boolean.Success.or.failure..
c7e0 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 76 61 6c 69 64 61 74 65 4d 61 69 .....*/.....function.validateMai
c800 6c 62 6f 78 28 26 24 6d 61 69 6c 62 6f 78 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f lbox(&$mailbox).....{.........//
c820 20 41 20 63 6f 75 70 6c 65 20 6f 66 20 64 65 66 61 75 6c 74 73 2e 0a 20 20 20 20 20 20 20 20 24 .A.couple.of.defaults..........$
c840 70 68 72 61 73 65 20 20 3d 20 27 27 3b 0a 20 20 20 20 20 20 20 20 24 63 6f 6d 6d 65 6e 74 20 3d phrase..=.'';.........$comment.=
c860 20 27 27 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 61 74 63 68 20 61 6e 79 20 52 46 43 38 32 .'';..........//.Catch.any.RFC82
c880 32 20 63 6f 6d 6d 65 6e 74 73 20 61 6e 64 20 73 74 6f 72 65 20 74 68 65 6d 20 73 65 70 61 72 61 2.comments.and.store.them.separa
c8a0 74 65 6c 79 0a 20 20 20 20 20 20 20 20 24 5f 6d 61 69 6c 62 6f 78 20 3d 20 24 6d 61 69 6c 62 6f tely.........$_mailbox.=.$mailbo
c8c0 78 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 73 74 72 6c 65 6e 28 74 72 69 6d 28 24 5f x;.........while.(strlen(trim($_
c8e0 6d 61 69 6c 62 6f 78 29 29 20 3e 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70 61 mailbox)).>.0).{.............$pa
c900 72 74 73 20 3d 20 65 78 70 6c 6f 64 65 28 27 28 27 2c 20 24 5f 6d 61 69 6c 62 6f 78 29 3b 0a 20 rts.=.explode('(',.$_mailbox);..
c920 20 20 20 20 20 20 20 20 20 20 20 24 62 65 66 6f 72 65 5f 63 6f 6d 6d 65 6e 74 20 3d 20 24 74 68 ...........$before_comment.=.$th
c940 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 27 28 27 29 3b 0a 20 20 is->_splitCheck($parts,.'(');...
c960 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 65 66 6f 72 65 5f 63 6f 6d 6d 65 6e 74 20 21 3d ..........if.($before_comment.!=
c980 20 24 5f 6d 61 69 6c 62 6f 78 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .$_mailbox).{.................//
c9a0 20 46 69 72 73 74 20 63 68 61 72 20 73 68 6f 75 6c 64 20 62 65 20 61 20 28 0a 20 20 20 20 20 20 .First.char.should.be.a.(.......
c9c0 20 20 20 20 20 20 20 20 20 20 24 63 6f 6d 6d 65 6e 74 20 20 20 20 3d 20 73 75 62 73 74 72 28 73 ..........$comment....=.substr(s
c9e0 74 72 5f 72 65 70 6c 61 63 65 28 24 62 65 66 6f 72 65 5f 63 6f 6d 6d 65 6e 74 2c 20 27 27 2c 20 tr_replace($before_comment,.'',.
ca00 24 5f 6d 61 69 6c 62 6f 78 29 2c 20 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 $_mailbox),.1);.................
ca20 24 70 61 72 74 73 20 20 20 20 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 29 27 2c 20 24 63 6f 6d 6d $parts......=.explode(')',.$comm
ca40 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 63 6f 6d 6d 65 6e 74 20 20 ent);.................$comment..
ca60 20 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 27 ..=.$this->_splitCheck($parts,.'
ca80 29 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 63 6f 6d 6d 65 6e 74 73 5b 5d )');.................$comments[]
caa0 20 3d 20 24 63 6f 6d 6d 65 6e 74 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .=.$comment;..................//
cac0 20 2b 31 20 69 73 20 66 6f 72 20 74 68 65 20 74 72 61 69 6c 69 6e 67 20 29 0a 20 20 20 20 20 20 .+1.is.for.the.trailing.).......
cae0 20 20 20 20 20 20 20 20 20 20 24 5f 6d 61 69 6c 62 6f 78 20 20 20 3d 20 73 75 62 73 74 72 28 24 ..........$_mailbox...=.substr($
cb00 5f 6d 61 69 6c 62 6f 78 2c 20 73 74 72 70 6f 73 28 24 5f 6d 61 69 6c 62 6f 78 2c 20 24 63 6f 6d _mailbox,.strpos($_mailbox,.$com
cb20 6d 65 6e 74 29 2b 73 74 72 6c 65 6e 28 24 63 6f 6d 6d 65 6e 74 29 2b 31 29 3b 0a 20 20 20 20 20 ment)+strlen($comment)+1);......
cb40 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......}.else.{.................
cb60 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a break;.............}.........}..
cb80 20 20 20 20 20 20 20 20 66 6f 72 28 24 69 3d 30 3b 20 24 69 3c 63 6f 75 6e 74 28 40 24 63 6f 6d ........for($i=0;.$i<count(@$com
cba0 6d 65 6e 74 73 29 3b 20 24 69 2b 2b 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6d 61 69 6c ments);.$i++){.............$mail
cbc0 62 6f 78 20 3d 20 73 74 72 5f 72 65 70 6c 61 63 65 28 27 28 27 2e 24 63 6f 6d 6d 65 6e 74 73 5b box.=.str_replace('('.$comments[
cbe0 24 69 5d 2e 27 29 27 2c 20 27 27 2c 20 24 6d 61 69 6c 62 6f 78 29 3b 0a 20 20 20 20 20 20 20 20 $i].')',.'',.$mailbox);.........
cc00 7d 0a 20 20 20 20 20 20 20 20 24 6d 61 69 6c 62 6f 78 20 3d 20 74 72 69 6d 28 24 6d 61 69 6c 62 }.........$mailbox.=.trim($mailb
cc20 6f 78 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 66 6f 72 20 6e 61 6d 65 20 ox);..........//.Check.for.name.
cc40 2b 20 72 6f 75 74 65 2d 61 64 64 72 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 73 74 72 28 +.route-addr.........if.(substr(
cc60 24 6d 61 69 6c 62 6f 78 2c 20 2d 31 29 20 3d 3d 20 27 3e 27 20 26 26 20 73 75 62 73 74 72 28 24 $mailbox,.-1).==.'>'.&&.substr($
cc80 6d 61 69 6c 62 6f 78 2c 20 30 2c 20 31 29 20 21 3d 20 27 3c 27 29 20 7b 0a 20 20 20 20 20 20 20 mailbox,.0,.1).!=.'<').{........
cca0 20 20 20 20 20 24 70 61 72 74 73 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 3c 27 2c 20 24 6d 61 69 .....$parts..=.explode('<',.$mai
ccc0 6c 62 6f 78 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6e 61 6d 65 20 20 20 3d 20 24 74 68 lbox);.............$name...=.$th
cce0 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 27 3c 27 29 3b 0a 0a 20 is->_splitCheck($parts,.'<');...
cd00 20 20 20 20 20 20 20 20 20 20 20 24 70 68 72 61 73 65 20 20 20 20 20 3d 20 74 72 69 6d 28 24 6e ...........$phrase.....=.trim($n
cd20 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 6f 75 74 65 5f 61 64 64 72 20 3d 20 ame);.............$route_addr.=.
cd40 74 72 69 6d 28 73 75 62 73 74 72 28 24 6d 61 69 6c 62 6f 78 2c 20 73 74 72 6c 65 6e 28 24 6e 61 trim(substr($mailbox,.strlen($na
cd60 6d 65 2e 27 3c 27 29 2c 20 2d 31 29 29 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 me.'<'),.-1));..............if.(
cd80 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 50 68 72 61 73 65 28 24 70 68 72 61 73 65 29 20 $this->_validatePhrase($phrase).
cda0 3d 3d 3d 20 66 61 6c 73 65 20 7c 7c 20 28 24 72 6f 75 74 65 5f 61 64 64 72 20 3d 20 24 74 68 69 ===.false.||.($route_addr.=.$thi
cdc0 73 2d 3e 5f 76 61 6c 69 64 61 74 65 52 6f 75 74 65 41 64 64 72 28 24 72 6f 75 74 65 5f 61 64 64 s->_validateRouteAddr($route_add
cde0 72 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r)).===.false).................r
ce00 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 4f 6e 6c 79 20 67 6f eturn.false;..........//.Only.go
ce20 74 20 61 64 64 72 2d 73 70 65 63 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 t.addr-spec.........}.else.{....
ce40 20 20 20 20 20 20 20 20 20 2f 2f 20 46 69 72 73 74 20 73 6e 69 70 20 61 6e 67 6c 65 20 62 72 61 .........//.First.snip.angle.bra
ce60 63 6b 65 74 73 20 69 66 20 70 72 65 73 65 6e 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ckets.if.present..............if
ce80 20 28 73 75 62 73 74 72 28 24 6d 61 69 6c 62 6f 78 2c 30 2c 31 29 20 3d 3d 20 27 3c 27 20 26 26 .(substr($mailbox,0,1).==.'<'.&&
cea0 20 73 75 62 73 74 72 28 24 6d 61 69 6c 62 6f 78 2c 2d 31 29 20 3d 3d 20 27 3e 27 29 0a 20 20 20 .substr($mailbox,-1).==.'>')....
cec0 20 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 5f 73 70 65 63 20 3d 20 73 75 62 73 74 72 .............$addr_spec.=.substr
cee0 28 24 6d 61 69 6c 62 6f 78 2c 31 2c 2d 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 ($mailbox,1,-1);.............els
cf00 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 5f 73 70 65 63 20 3d 20 24 e.................$addr_spec.=.$
cf20 6d 61 69 6c 62 6f 78 3b 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 24 61 64 64 72 mailbox;..............if.(($addr
cf40 5f 73 70 65 63 20 3d 20 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 41 64 64 72 53 70 65 63 _spec.=.$this->_validateAddrSpec
cf60 28 24 61 64 64 72 5f 73 70 65 63 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 ($addr_spec)).===.false)........
cf80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d .........return.false;.........}
cfa0 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 6f 62 6a 65 63 ..........//.Construct.the.objec
cfc0 74 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0a 20 20 20 20 20 20 20 t.that.will.be.returned.........
cfe0 20 24 6d 62 6f 78 20 3d 20 6e 65 77 20 73 74 64 43 6c 61 73 73 28 29 3b 0a 0a 20 20 20 20 20 20 .$mbox.=.new.stdClass();........
d000 20 20 2f 2f 20 41 64 64 20 74 68 65 20 70 68 72 61 73 65 20 28 65 76 65 6e 20 69 66 20 65 6d 70 ..//.Add.the.phrase.(even.if.emp
d020 74 79 29 20 61 6e 64 20 63 6f 6d 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 24 6d 62 6f 78 2d 3e ty).and.comments.........$mbox->
d040 70 65 72 73 6f 6e 61 6c 20 3d 20 24 70 68 72 61 73 65 3b 0a 20 20 20 20 20 20 20 20 24 6d 62 6f personal.=.$phrase;.........$mbo
d060 78 2d 3e 63 6f 6d 6d 65 6e 74 20 20 3d 20 69 73 73 65 74 28 24 63 6f 6d 6d 65 6e 74 73 29 20 3f x->comment..=.isset($comments).?
d080 20 24 63 6f 6d 6d 65 6e 74 73 20 3a 20 61 72 72 61 79 28 29 3b 0a 0a 20 20 20 20 20 20 20 20 69 .$comments.:.array();..........i
d0a0 66 20 28 69 73 73 65 74 28 24 72 6f 75 74 65 5f 61 64 64 72 29 29 20 7b 0a 20 20 20 20 20 20 20 f.(isset($route_addr)).{........
d0c0 20 20 20 20 20 24 6d 62 6f 78 2d 3e 6d 61 69 6c 62 6f 78 20 3d 20 24 72 6f 75 74 65 5f 61 64 64 .....$mbox->mailbox.=.$route_add
d0e0 72 5b 27 6c 6f 63 61 6c 5f 70 61 72 74 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6d 62 r['local_part'];.............$mb
d100 6f 78 2d 3e 68 6f 73 74 20 20 20 20 3d 20 24 72 6f 75 74 65 5f 61 64 64 72 5b 27 64 6f 6d 61 69 ox->host....=.$route_addr['domai
d120 6e 27 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 6f 75 74 65 5f 61 64 64 72 5b 27 61 64 n'];.............$route_addr['ad
d140 6c 27 5d 20 21 3d 3d 20 27 27 20 3f 20 24 6d 62 6f 78 2d 3e 61 64 6c 20 3d 20 24 72 6f 75 74 65 l'].!==.''.?.$mbox->adl.=.$route
d160 5f 61 64 64 72 5b 27 61 64 6c 27 5d 20 3a 20 27 27 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 _addr['adl'].:.'';.........}.els
d180 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6d 62 6f 78 2d 3e 6d 61 69 6c 62 6f 78 20 3d e.{.............$mbox->mailbox.=
d1a0 20 24 61 64 64 72 5f 73 70 65 63 5b 27 6c 6f 63 61 6c 5f 70 61 72 74 27 5d 3b 0a 20 20 20 20 20 .$addr_spec['local_part'];......
d1c0 20 20 20 20 20 20 20 24 6d 62 6f 78 2d 3e 68 6f 73 74 20 20 20 20 3d 20 24 61 64 64 72 5f 73 70 .......$mbox->host....=.$addr_sp
d1e0 65 63 5b 27 64 6f 6d 61 69 6e 27 5d 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 ec['domain'];.........}.........
d200 20 24 6d 61 69 6c 62 6f 78 20 3d 20 24 6d 62 6f 78 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .$mailbox.=.$mbox;.........retur
d220 6e 20 74 72 75 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 n.true;.....}....../**......*.Th
d240 69 73 20 66 75 6e 63 74 69 6f 6e 20 76 61 6c 69 64 61 74 65 73 20 61 20 72 6f 75 74 65 2d 61 64 is.function.validates.a.route-ad
d260 64 72 20 77 68 69 63 68 20 69 73 3a 0a 20 20 20 20 20 2a 20 72 6f 75 74 65 2d 61 64 64 72 20 3d dr.which.is:......*.route-addr.=
d280 20 22 3c 22 20 5b 72 6f 75 74 65 5d 20 61 64 64 72 2d 73 70 65 63 20 22 3e 22 0a 20 20 20 20 20 ."<".[route].addr-spec.">"......
d2a0 2a 0a 20 20 20 20 20 2a 20 41 6e 67 6c 65 20 62 72 61 63 6b 65 74 73 20 68 61 76 65 20 61 6c 72 *......*.Angle.brackets.have.alr
d2c0 65 61 64 79 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 20 61 74 20 74 68 65 20 70 6f 69 6e 74 20 6f eady.been.removed.at.the.point.o
d2e0 66 0a 20 20 20 20 20 2a 20 67 65 74 74 69 6e 67 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f f......*.getting.to.this.functio
d300 6e 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 n.......*.......*.@access.privat
d320 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 72 6f 75 74 65 5f 61 64 e......*.@param.string.$route_ad
d340 64 72 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 40 dr.The.string.to.check.......*.@
d360 72 65 74 75 72 6e 20 6d 69 78 65 64 20 46 61 6c 73 65 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 6f return.mixed.False.on.failure,.o
d380 72 20 61 6e 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 76 61 6c 69 64 61 74 65 64 20 r.an.array.containing.validated.
d3a0 61 64 64 72 65 73 73 2f 72 6f 75 74 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 73 75 63 address/route.information.on.suc
d3c0 63 65 73 73 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 cess.......*/.....function._vali
d3e0 64 61 74 65 52 6f 75 74 65 41 64 64 72 28 24 72 6f 75 74 65 5f 61 64 64 72 29 0a 20 20 20 20 7b dateRouteAddr($route_addr).....{
d400 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b 20 66 6f 72 20 63 6f 6c 6f 6e 2e 0a 20 20 20 .........//.Check.for.colon.....
d420 20 20 20 20 20 69 66 20 28 73 74 72 70 6f 73 28 24 72 6f 75 74 65 5f 61 64 64 72 2c 20 27 3a 27 .....if.(strpos($route_addr,.':'
d440 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70 61 72 74 ).!==.false).{.............$part
d460 73 20 3d 20 65 78 70 6c 6f 64 65 28 27 3a 27 2c 20 24 72 6f 75 74 65 5f 61 64 64 72 29 3b 0a 20 s.=.explode(':',.$route_addr);..
d480 20 20 20 20 20 20 20 20 20 20 20 24 72 6f 75 74 65 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 ...........$route.=.$this->_spli
d4a0 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 27 3a 27 29 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 tCheck($parts,.':');.........}.e
d4c0 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 6f 75 74 65 20 3d 20 24 72 6f 75 74 lse.{.............$route.=.$rout
d4e0 65 5f 61 64 64 72 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 49 66 e_addr;.........}..........//.If
d500 20 24 72 6f 75 74 65 20 69 73 20 73 61 6d 65 20 61 73 20 24 72 6f 75 74 65 5f 61 64 64 72 20 74 .$route.is.same.as.$route_addr.t
d520 68 65 6e 20 74 68 65 20 63 6f 6c 6f 6e 20 77 61 73 20 69 6e 0a 20 20 20 20 20 20 20 20 2f 2f 20 hen.the.colon.was.in.........//.
d540 71 75 6f 74 65 73 20 6f 72 20 62 72 61 63 6b 65 74 73 20 6f 72 2c 20 6f 66 20 63 6f 75 72 73 65 quotes.or.brackets.or,.of.course
d560 2c 20 6e 6f 6e 20 65 78 69 73 74 65 6e 74 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 72 6f 75 ,.non.existent..........if.($rou
d580 74 65 20 3d 3d 3d 20 24 72 6f 75 74 65 5f 61 64 64 72 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 te.===.$route_addr){............
d5a0 20 75 6e 73 65 74 28 24 72 6f 75 74 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 .unset($route);.............$add
d5c0 72 5f 73 70 65 63 20 3d 20 24 72 6f 75 74 65 5f 61 64 64 72 3b 0a 20 20 20 20 20 20 20 20 20 20 r_spec.=.$route_addr;...........
d5e0 20 20 69 66 20 28 28 24 61 64 64 72 5f 73 70 65 63 20 3d 20 24 74 68 69 73 2d 3e 5f 76 61 6c 69 ..if.(($addr_spec.=.$this->_vali
d600 64 61 74 65 41 64 64 72 53 70 65 63 28 24 61 64 64 72 5f 73 70 65 63 29 29 20 3d 3d 3d 20 66 61 dateAddrSpec($addr_spec)).===.fa
d620 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 lse).{.................return.fa
d640 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 lse;.............}.........}.els
d660 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 6c 69 64 61 74 65 20 72 6f 75 74 e.{.............//.Validate.rout
d680 65 20 70 61 72 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 24 72 6f 75 74 65 20 e.part..............if.(($route.
d6a0 3d 20 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 52 6f 75 74 65 28 24 72 6f 75 74 65 29 29 =.$this->_validateRoute($route))
d6c0 20 3d 3d 3d 20 66 61 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .===.false).{.................re
d6e0 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 turn.false;.............}.......
d700 20 20 20 20 20 20 20 24 61 64 64 72 5f 73 70 65 63 20 3d 20 73 75 62 73 74 72 28 24 72 6f 75 74 .......$addr_spec.=.substr($rout
d720 65 5f 61 64 64 72 2c 20 73 74 72 6c 65 6e 28 24 72 6f 75 74 65 20 2e 20 27 3a 27 29 29 3b 0a 0a e_addr,.strlen($route...':'));..
d740 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 6c 69 64 61 74 65 20 61 64 64 72 2d 73 70 65 ............//.Validate.addr-spe
d760 63 20 70 61 72 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 24 61 64 64 72 5f 73 c.part..............if.(($addr_s
d780 70 65 63 20 3d 20 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 41 64 64 72 53 70 65 63 28 24 pec.=.$this->_validateAddrSpec($
d7a0 61 64 64 72 5f 73 70 65 63 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20 addr_spec)).===.false).{........
d7c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 .........return.false;..........
d7e0 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 ...}.........}..........if.(isse
d800 74 28 24 72 6f 75 74 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 65 74 75 72 6e t($route)).{.............$return
d820 5b 27 61 64 6c 27 5d 20 3d 20 24 72 6f 75 74 65 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 ['adl'].=.$route;.........}.else
d840 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 65 74 75 72 6e 5b 27 61 64 6c 27 5d 20 3d 20 .{.............$return['adl'].=.
d860 27 27 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 24 72 65 74 75 72 6e 20 3d '';.........}..........$return.=
d880 20 61 72 72 61 79 5f 6d 65 72 67 65 28 24 72 65 74 75 72 6e 2c 20 24 61 64 64 72 5f 73 70 65 63 .array_merge($return,.$addr_spec
d8a0 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 72 65 74 75 72 6e 3b 0a 20 20 20 20 7d );.........return.$return;.....}
d8c0 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f 6e 20 74 6f 20 76 61 6c ....../**......*.Function.to.val
d8e0 69 64 61 74 65 20 61 20 72 6f 75 74 65 2c 20 77 68 69 63 68 20 69 73 3a 0a 20 20 20 20 20 2a 20 idate.a.route,.which.is:......*.
d900 72 6f 75 74 65 20 3d 20 31 23 28 22 40 22 20 64 6f 6d 61 69 6e 29 20 22 3a 22 0a 20 20 20 20 20 route.=.1#("@".domain).":"......
d920 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a *.......*.@access.private......*
d940 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 72 6f 75 74 65 20 54 68 65 20 73 74 72 69 6e 67 .@param.string.$route.The.string
d960 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 .to.check.......*.@return.mixed.
d980 46 61 6c 73 65 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 6f 72 20 74 68 65 20 76 61 6c 69 64 61 74 False.on.failure,.or.the.validat
d9a0 65 64 20 24 72 6f 75 74 65 20 6f 6e 20 73 75 63 63 65 73 73 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 ed.$route.on.success.......*/...
d9c0 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 52 6f 75 74 65 28 24 72 6f 75 74 65 ..function._validateRoute($route
d9e0 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 70 6c 69 74 20 6f 6e 20 63 6f 6d 6d ).....{.........//.Split.on.comm
da00 61 2e 0a 20 20 20 20 20 20 20 20 24 64 6f 6d 61 69 6e 73 20 3d 20 65 78 70 6c 6f 64 65 28 27 2c a..........$domains.=.explode(',
da20 27 2c 20 74 72 69 6d 28 24 72 6f 75 74 65 29 29 3b 0a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 ',.trim($route));..........for.(
da40 24 69 20 3d 20 30 3b 20 24 69 20 3c 20 63 6f 75 6e 74 28 24 64 6f 6d 61 69 6e 73 29 3b 20 24 69 $i.=.0;.$i.<.count($domains);.$i
da60 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 64 6f 6d 61 69 6e 73 5b 24 69 5d 20 3d ++).{.............$domains[$i].=
da80 20 73 74 72 5f 72 65 70 6c 61 63 65 28 27 40 27 2c 20 27 27 2c 20 74 72 69 6d 28 24 64 6f 6d 61 .str_replace('@',.'',.trim($doma
daa0 69 6e 73 5b 24 69 5d 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 24 74 68 69 ins[$i]));.............if.(!$thi
dac0 73 2d 3e 5f 76 61 6c 69 64 61 74 65 44 6f 6d 61 69 6e 28 24 64 6f 6d 61 69 6e 73 5b 24 69 5d 29 s->_validateDomain($domains[$i])
dae0 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 ).return.false;.........}.......
db00 20 20 20 72 65 74 75 72 6e 20 24 72 6f 75 74 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a ...return.$route;.....}....../**
db20 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 20 64 ......*.Function.to.validate.a.d
db40 6f 6d 61 69 6e 2c 20 74 68 6f 75 67 68 20 74 68 69 73 20 69 73 20 6e 6f 74 20 71 75 69 74 65 20 omain,.though.this.is.not.quite.
db60 77 68 61 74 0a 20 20 20 20 20 2a 20 79 6f 75 20 65 78 70 65 63 74 20 6f 66 20 61 20 73 74 72 69 what......*.you.expect.of.a.stri
db80 63 74 20 69 6e 74 65 72 6e 65 74 20 64 6f 6d 61 69 6e 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 ct.internet.domain.......*......
dba0 2a 20 64 6f 6d 61 69 6e 20 3d 20 73 75 62 2d 64 6f 6d 61 69 6e 20 2a 28 22 2e 22 20 73 75 62 2d *.domain.=.sub-domain.*(".".sub-
dbc0 64 6f 6d 61 69 6e 29 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 domain)......*.......*.@access.p
dbe0 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 64 6f 6d rivate......*.@param.string.$dom
dc00 61 69 6e 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 ain.The.string.to.check.......*.
dc20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 46 61 6c 73 65 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 @return.mixed.False.on.failure,.
dc40 6f 72 20 74 68 65 20 76 61 6c 69 64 61 74 65 64 20 64 6f 6d 61 69 6e 20 6f 6e 20 73 75 63 63 65 or.the.validated.domain.on.succe
dc60 73 73 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 ss.......*/.....function._valida
dc80 74 65 44 6f 6d 61 69 6e 28 24 64 6f 6d 61 69 6e 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 teDomain($domain).....{.........
dca0 2f 2f 20 4e 6f 74 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 74 20 75 73 65 20 6f 66 20 24 73 75 //.Note.the.different.use.of.$su
dcc0 62 64 6f 6d 61 69 6e 73 20 61 6e 64 20 24 73 75 62 5f 64 6f 6d 61 69 6e 73 20 20 20 20 20 20 20 bdomains.and.$sub_domains.......
dce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 24 73 75 62 64 6f ..........................$subdo
dd00 6d 61 69 6e 73 20 3d 20 65 78 70 6c 6f 64 65 28 27 2e 27 2c 20 24 64 6f 6d 61 69 6e 29 3b 0a 0a mains.=.explode('.',.$domain);..
dd20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 63 6f 75 6e 74 28 24 73 75 62 64 6f 6d 61 69 6e 73 ........while.(count($subdomains
dd40 29 20 3e 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 75 62 5f 64 6f 6d 61 69 6e ).>.0).{.............$sub_domain
dd60 73 5b 5d 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 73 75 62 64 6f 6d s[].=.$this->_splitCheck($subdom
dd80 61 69 6e 73 2c 20 27 2e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 ains,.'.');.............for.($i.
dda0 3d 20 30 3b 20 24 69 20 3c 20 24 74 68 69 73 2d 3e 69 6e 64 65 78 20 2b 20 31 3b 20 24 69 2b 2b =.0;.$i.<.$this->index.+.1;.$i++
ddc0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 72 61 79 5f 73 68 69 66 74 28 24 73 ).................array_shift($s
dde0 75 62 64 6f 6d 61 69 6e 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 66 ubdomains);.........}..........f
de00 6f 72 20 28 24 69 20 3d 20 30 3b 20 24 69 20 3c 20 63 6f 75 6e 74 28 24 73 75 62 5f 64 6f 6d 61 or.($i.=.0;.$i.<.count($sub_doma
de20 69 6e 73 29 3b 20 24 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 24 ins);.$i++).{.............if.(!$
de40 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 53 75 62 64 6f 6d 61 69 6e 28 74 72 69 6d 28 24 73 this->_validateSubdomain(trim($s
de60 75 62 5f 64 6f 6d 61 69 6e 73 5b 24 69 5d 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ub_domains[$i])))...............
de80 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 ..return.false;.........}.......
dea0 20 20 20 2f 2f 20 4d 61 6e 61 67 65 64 20 74 6f 20 67 65 74 20 68 65 72 65 2c 20 73 6f 20 72 65 ...//.Managed.to.get.here,.so.re
dec0 74 75 72 6e 20 69 6e 70 75 74 2e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 64 6f 6d 61 turn.input..........return.$doma
dee0 69 6e 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 in;.....}....../**......*.Functi
df00 6f 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 20 73 75 62 64 6f 6d 61 69 6e 3a 0a 20 20 20 20 on.to.validate.a.subdomain:.....
df20 20 2a 20 20 20 73 75 62 64 6f 6d 61 69 6e 20 3d 20 64 6f 6d 61 69 6e 2d 72 65 66 20 2f 20 64 6f .*...subdomain.=.domain-ref./.do
df40 6d 61 69 6e 2d 6c 69 74 65 72 61 6c 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 main-literal......*.......*.@acc
df60 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 ess.private......*.@param.string
df80 20 24 73 75 62 64 6f 6d 61 69 6e 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e .$subdomain.The.string.to.check.
dfa0 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 53 75 63 63 65 73 73 20 ......*.@return.boolean.Success.
dfc0 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e or.failure.......*/.....function
dfe0 20 5f 76 61 6c 69 64 61 74 65 53 75 62 64 6f 6d 61 69 6e 28 24 73 75 62 64 6f 6d 61 69 6e 29 0a ._validateSubdomain($subdomain).
e000 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 70 72 65 67 5f 6d 61 74 63 68 28 27 7c 5e ....{.........if.(preg_match('|^
e020 5c 5b 28 2e 2a 29 5d 24 7c 27 2c 20 24 73 75 62 64 6f 6d 61 69 6e 2c 20 24 61 72 72 29 29 7b 0a \[(.*)]$|',.$subdomain,.$arr)){.
e040 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 ............if.(!$this->_validat
e060 65 44 6c 69 74 65 72 61 6c 28 24 61 72 72 5b 31 5d 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 eDliteral($arr[1])).return.false
e080 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ;.........}.else.{.............i
e0a0 66 20 28 21 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 41 74 6f 6d 28 24 73 75 62 64 6f 6d f.(!$this->_validateAtom($subdom
e0c0 61 69 6e 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 ain)).return.false;.........}...
e0e0 20 20 20 20 20 20 20 2f 2f 20 47 6f 74 20 68 65 72 65 2c 20 73 6f 20 72 65 74 75 72 6e 20 73 75 .......//.Got.here,.so.return.su
e100 63 63 65 73 73 66 75 6c 2e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 ccessful..........return.true;..
e120 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f 6e 20 74 6f ...}....../**......*.Function.to
e140 20 76 61 6c 69 64 61 74 65 20 61 20 64 6f 6d 61 69 6e 20 6c 69 74 65 72 61 6c 3a 0a 20 20 20 20 .validate.a.domain.literal:.....
e160 20 2a 20 20 20 64 6f 6d 61 69 6e 2d 6c 69 74 65 72 61 6c 20 3d 20 20 22 5b 22 20 2a 28 64 74 65 .*...domain-literal.=.."[".*(dte
e180 78 74 20 2f 20 71 75 6f 74 65 64 2d 70 61 69 72 29 20 22 5d 22 0a 20 20 20 20 20 2a 20 0a 20 20 xt./.quoted-pair)."]"......*....
e1a0 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 ...*.@access.private......*.@par
e1c0 61 6d 20 73 74 72 69 6e 67 20 24 64 6c 69 74 65 72 61 6c 20 54 68 65 20 73 74 72 69 6e 67 20 74 am.string.$dliteral.The.string.t
e1e0 6f 20 63 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 o.check.......*.@return.boolean.
e200 53 75 63 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 Success.or.failure.......*/.....
e220 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 44 6c 69 74 65 72 61 6c 28 24 64 6c 69 74 function._validateDliteral($dlit
e240 65 72 61 6c 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 70 72 65 67 eral).....{.........return.!preg
e260 5f 6d 61 74 63 68 28 27 2f 28 2e 29 5b 5d 5b 5c 78 30 44 5c 5c 5c 5c 5d 2f 27 2c 20 24 64 6c 69 _match('/(.)[][\x0D\\\\]/',.$dli
e280 74 65 72 61 6c 2c 20 24 6d 61 74 63 68 65 73 29 20 26 26 20 24 6d 61 74 63 68 65 73 5b 31 5d 20 teral,.$matches).&&.$matches[1].
e2a0 21 3d 20 27 5c 5c 27 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 !=.'\\';.....}....../**......*.F
e2c0 75 6e 63 74 69 6f 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 6e 20 61 64 64 72 2d 73 70 65 63 unction.to.validate.an.addr-spec
e2e0 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 61 64 64 72 2d 73 70 65 63 20 3d 20 6c 6f 63 61 .......*......*.addr-spec.=.loca
e300 6c 2d 70 61 72 74 20 22 40 22 20 64 6f 6d 61 69 6e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a l-part."@".domain......*.......*
e320 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 .@access.private......*.@param.s
e340 74 72 69 6e 67 20 24 61 64 64 72 5f 73 70 65 63 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 tring.$addr_spec.The.string.to.c
e360 68 65 63 6b 2e 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 46 61 6c 73 65 heck.......*.@return.mixed.False
e380 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 6f 72 20 74 68 65 20 76 61 6c 69 64 61 74 65 64 20 61 64 .on.failure,.or.the.validated.ad
e3a0 64 72 2d 73 70 65 63 20 6f 6e 20 73 75 63 63 65 73 73 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 dr-spec.on.success.......*/.....
e3c0 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 41 64 64 72 53 70 65 63 28 24 61 64 64 72 function._validateAddrSpec($addr
e3e0 5f 73 70 65 63 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 61 64 64 72 5f 73 70 65 63 20 _spec).....{.........$addr_spec.
e400 3d 20 74 72 69 6d 28 24 61 64 64 72 5f 73 70 65 63 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 =.trim($addr_spec);..........//.
e420 53 70 6c 69 74 20 6f 6e 20 40 20 73 69 67 6e 20 69 66 20 74 68 65 72 65 20 69 73 20 6f 6e 65 2e Split.on.@.sign.if.there.is.one.
e440 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 70 6f 73 28 24 61 64 64 72 5f 73 70 65 63 2c 20 .........if.(strpos($addr_spec,.
e460 27 40 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70 '@').!==.false).{.............$p
e480 61 72 74 73 20 20 20 20 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 40 27 2c 20 24 61 64 64 72 5f 73 arts......=.explode('@',.$addr_s
e4a0 70 65 63 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6c 6f 63 61 6c 5f 70 61 72 74 20 3d 20 pec);.............$local_part.=.
e4c0 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 27 40 27 29 3b $this->_splitCheck($parts,.'@');
e4e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 64 6f 6d 61 69 6e 20 20 20 20 20 3d 20 73 75 62 73 74 .............$domain.....=.subst
e500 72 28 24 61 64 64 72 5f 73 70 65 63 2c 20 73 74 72 6c 65 6e 28 24 6c 6f 63 61 6c 5f 70 61 72 74 r($addr_spec,.strlen($local_part
e520 20 2e 20 27 40 27 29 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 20 40 20 73 69 67 6e 20 ...'@'));..........//.No.@.sign.
e540 73 6f 20 61 73 73 75 6d 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 6f 6d 61 69 6e 2e 0a 20 20 so.assume.the.default.domain....
e560 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6c 6f 63 61 ......}.else.{.............$loca
e580 6c 5f 70 61 72 74 20 3d 20 24 61 64 64 72 5f 73 70 65 63 3b 0a 20 20 20 20 20 20 20 20 20 20 20 l_part.=.$addr_spec;............
e5a0 20 24 64 6f 6d 61 69 6e 20 20 20 20 20 3d 20 24 74 68 69 73 2d 3e 64 65 66 61 75 6c 74 5f 64 6f .$domain.....=.$this->default_do
e5c0 6d 61 69 6e 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 24 6c main;.........}..........if.(($l
e5e0 6f 63 61 6c 5f 70 61 72 74 20 3d 20 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 4c 6f 63 61 ocal_part.=.$this->_validateLoca
e600 6c 50 61 72 74 28 24 6c 6f 63 61 6c 5f 70 61 72 74 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 20 72 lPart($local_part)).===.false).r
e620 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 24 64 6f 6d 61 69 eturn.false;.........if.(($domai
e640 6e 20 20 20 20 20 3d 20 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 44 6f 6d 61 69 6e 28 24 n.....=.$this->_validateDomain($
e660 64 6f 6d 61 69 6e 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 domain)).===.false).return.false
e680 3b 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 2f 2f 20 47 6f 74 20 68 65 72 65 20 73 ;..................//.Got.here.s
e6a0 6f 20 72 65 74 75 72 6e 20 73 75 63 63 65 73 73 66 75 6c 2e 0a 20 20 20 20 20 20 20 20 72 65 74 o.return.successful..........ret
e6c0 75 72 6e 20 61 72 72 61 79 28 27 6c 6f 63 61 6c 5f 70 61 72 74 27 20 3d 3e 20 24 6c 6f 63 61 6c urn.array('local_part'.=>.$local
e6e0 5f 70 61 72 74 2c 20 27 64 6f 6d 61 69 6e 27 20 3d 3e 20 24 64 6f 6d 61 69 6e 29 3b 0a 20 20 20 _part,.'domain'.=>.$domain);....
e700 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f 6e 20 74 6f 20 76 .}....../**......*.Function.to.v
e720 61 6c 69 64 61 74 65 20 74 68 65 20 6c 6f 63 61 6c 20 70 61 72 74 20 6f 66 20 61 6e 20 61 64 64 alidate.the.local.part.of.an.add
e740 72 65 73 73 3a 0a 20 20 20 20 20 2a 20 20 20 6c 6f 63 61 6c 2d 70 61 72 74 20 3d 20 77 6f 72 64 ress:......*...local-part.=.word
e760 20 2a 28 22 2e 22 20 77 6f 72 64 29 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 61 63 63 .*(".".word)......*.......*.@acc
e780 65 73 73 20 70 72 69 76 61 74 65 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 ess.private......*.@param.string
e7a0 20 24 6c 6f 63 61 6c 5f 70 61 72 74 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 .$local_part......*.@return.mixe
e7c0 64 20 46 61 6c 73 65 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 6f 72 20 74 68 65 20 76 61 6c 69 64 d.False.on.failure,.or.the.valid
e7e0 61 74 65 64 20 6c 6f 63 61 6c 20 70 61 72 74 20 6f 6e 20 73 75 63 63 65 73 73 2e 0a 20 20 20 20 ated.local.part.on.success......
e800 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 4c 6f 63 61 6c 50 .*/.....function._validateLocalP
e820 61 72 74 28 24 6c 6f 63 61 6c 5f 70 61 72 74 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 art($local_part).....{.........$
e840 70 61 72 74 73 20 3d 20 65 78 70 6c 6f 64 65 28 27 2e 27 2c 20 24 6c 6f 63 61 6c 5f 70 61 72 74 parts.=.explode('.',.$local_part
e860 29 3b 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 70 6c 69 74 20 74 68 65 20 6c 6f 63 61 6c 5f 70 );..........//.Split.the.local_p
e880 61 72 74 20 69 6e 74 6f 20 77 6f 72 64 73 2e 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 63 art.into.words..........while.(c
e8a0 6f 75 6e 74 28 24 70 61 72 74 73 29 20 3e 20 30 29 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 ount($parts).>.0){.............$
e8c0 77 6f 72 64 73 5b 5d 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 words[].=.$this->_splitCheck($pa
e8e0 72 74 73 2c 20 27 2e 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d rts,.'.');.............for.($i.=
e900 20 30 3b 20 24 69 20 3c 20 24 74 68 69 73 2d 3e 69 6e 64 65 78 20 2b 20 31 3b 20 24 69 2b 2b 29 .0;.$i.<.$this->index.+.1;.$i++)
e920 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 72 61 79 5f 73 68 69 66 74 28 24 .{.................array_shift($
e940 70 61 72 74 73 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a parts);.............}.........}.
e960 0a 20 20 20 20 20 20 20 20 2f 2f 20 56 61 6c 69 64 61 74 65 20 65 61 63 68 20 77 6f 72 64 2e 0a .........//.Validate.each.word..
e980 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d 20 30 3b 20 24 69 20 3c 20 63 6f 75 6e 74 28 ........for.($i.=.0;.$i.<.count(
e9a0 24 77 6f 72 64 73 29 3b 20 24 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 $words);.$i++).{.............if.
e9c0 28 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 50 68 72 61 73 65 28 74 72 69 6d 28 24 77 6f ($this->_validatePhrase(trim($wo
e9e0 72 64 73 5b 24 69 5d 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 20 72 65 74 75 72 6e 20 66 61 6c 73 rds[$i])).===.false).return.fals
ea00 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 4d 61 6e 61 67 65 64 e;.........}..........//.Managed
ea20 20 74 6f 20 67 65 74 20 68 65 72 65 2c 20 73 6f 20 72 65 74 75 72 6e 20 74 68 65 20 69 6e 70 75 .to.get.here,.so.return.the.inpu
ea40 74 2e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 6c 6f 63 61 6c 5f 70 61 72 74 3b 0a 20 t..........return.$local_part;..
ea60 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 2a 20 52 65 74 75 72 6e 73 20 61 6e 20 61 ...}....../**.....*.Returns.an.a
ea80 70 70 72 6f 78 69 6d 61 74 65 20 63 6f 75 6e 74 20 6f 66 20 68 6f 77 20 6d 61 6e 79 20 61 64 64 pproximate.count.of.how.many.add
eaa0 72 65 73 73 65 73 20 61 72 65 0a 20 20 20 20 2a 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 73 74 resses.are.....*.in.the.given.st
eac0 72 69 6e 67 2e 20 54 68 69 73 20 69 73 20 41 50 50 52 4f 58 49 4d 41 54 45 20 61 73 20 69 74 20 ring..This.is.APPROXIMATE.as.it.
eae0 6f 6e 6c 79 20 73 70 6c 69 74 73 0a 20 20 20 20 2a 20 62 61 73 65 64 20 6f 6e 20 61 20 63 6f 6d only.splits.....*.based.on.a.com
eb00 6d 61 20 77 68 69 63 68 20 68 61 73 20 6e 6f 20 70 72 65 63 65 64 69 6e 67 20 62 61 63 6b 73 6c ma.which.has.no.preceding.backsl
eb20 61 73 68 2e 20 43 6f 75 6c 64 20 62 65 0a 20 20 20 20 2a 20 75 73 65 66 75 6c 20 61 73 20 6c 61 ash..Could.be.....*.useful.as.la
eb40 72 67 65 20 61 6d 6f 75 6e 74 73 20 6f 66 20 61 64 64 72 65 73 73 65 73 20 77 69 6c 6c 20 65 6e rge.amounts.of.addresses.will.en
eb60 64 20 75 70 20 70 72 6f 64 75 63 69 6e 67 0a 20 20 20 20 2a 20 2a 6c 61 72 67 65 2a 20 73 74 72 d.up.producing.....*.*large*.str
eb80 75 63 74 75 72 65 73 20 77 68 65 6e 20 75 73 65 64 20 77 69 74 68 20 70 61 72 73 65 41 64 64 72 uctures.when.used.with.parseAddr
eba0 65 73 73 4c 69 73 74 28 29 2e 0a 20 20 20 20 2a 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 73 essList()......*.....*.@param..s
ebc0 74 72 69 6e 67 20 24 64 61 74 61 20 41 64 64 72 65 73 73 65 73 20 74 6f 20 63 6f 75 6e 74 0a 20 tring.$data.Addresses.to.count..
ebe0 20 20 20 2a 20 40 72 65 74 75 72 6e 20 69 6e 74 20 20 20 20 20 20 20 20 20 20 41 70 70 72 6f 78 ...*.@return.int..........Approx
ec00 69 6d 61 74 65 20 63 6f 75 6e 74 0a 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 imate.count.....*/.....function.
ec20 61 70 70 72 6f 78 69 6d 61 74 65 43 6f 75 6e 74 28 24 64 61 74 61 29 0a 20 20 20 20 7b 0a 20 20 approximateCount($data).....{...
ec40 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f 75 6e 74 28 70 72 65 67 5f 73 70 6c 69 74 28 27 2f ......return.count(preg_split('/
ec60 28 3f 3c 21 5c 5c 5c 5c 29 2c 2f 27 2c 20 24 64 61 74 61 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 (?<!\\\\),/',.$data));.....}....
ec80 20 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 2a 20 54 68 69 73 20 69 73 20 61 20 65 6d 61 69 6c 20 ....../**.....*.This.is.a.email.
eca0 76 61 6c 69 64 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 73 65 70 65 72 61 74 65 20 74 6f 20 validating.function.seperate.to.
ecc0 74 68 65 20 72 65 73 74 0a 20 20 20 20 2a 20 6f 66 20 74 68 65 20 63 6c 61 73 73 2e 20 49 74 20 the.rest.....*.of.the.class..It.
ece0 73 69 6d 70 6c 79 20 76 61 6c 69 64 61 74 65 73 20 77 68 65 74 68 65 72 20 61 6e 20 65 6d 61 69 simply.validates.whether.an.emai
ed00 6c 20 69 73 20 6f 66 0a 20 20 20 20 2a 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 69 6e 74 65 72 6e 65 l.is.of.....*.the.common.interne
ed20 74 20 66 6f 72 6d 3a 20 3c 75 73 65 72 3e 40 3c 64 6f 6d 61 69 6e 3e 2e 20 54 68 69 73 20 63 61 t.form:.<user>@<domain>..This.ca
ed40 6e 20 62 65 0a 20 20 20 20 2a 20 73 75 66 66 69 63 69 65 6e 74 20 66 6f 72 20 6d 6f 73 74 20 70 n.be.....*.sufficient.for.most.p
ed60 65 6f 70 6c 65 2e 20 4f 70 74 69 6f 6e 61 6c 20 73 74 72 69 63 74 65 72 20 6d 6f 64 65 20 63 61 eople..Optional.stricter.mode.ca
ed80 6e 0a 20 20 20 20 2a 20 62 65 20 75 74 69 6c 69 73 65 64 20 77 68 69 63 68 20 72 65 73 74 72 69 n.....*.be.utilised.which.restri
eda0 63 74 73 20 6d 61 69 6c 62 6f 78 20 63 68 61 72 61 63 74 65 72 73 20 61 6c 6c 6f 77 65 64 0a 20 cts.mailbox.characters.allowed..
edc0 20 20 20 2a 20 74 6f 20 61 6c 70 68 61 6e 75 6d 65 72 69 63 2c 20 66 75 6c 6c 20 73 74 6f 70 2c ...*.to.alphanumeric,.full.stop,
ede0 20 68 79 70 68 65 6e 20 61 6e 64 20 75 6e 64 65 72 73 63 6f 72 65 2e 0a 20 20 20 20 2a 0a 20 20 .hyphen.and.underscore......*...
ee00 20 20 2a 20 40 70 61 72 61 6d 20 20 73 74 72 69 6e 67 20 20 24 64 61 74 61 20 20 20 41 64 64 72 ..*.@param..string..$data...Addr
ee20 65 73 73 20 74 6f 20 63 68 65 63 6b 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 62 6f 6f 6c 65 ess.to.check.....*.@param..boole
ee40 61 6e 20 24 73 74 72 69 63 74 20 4f 70 74 69 6f 6e 61 6c 20 73 74 72 69 63 74 65 72 20 6d 6f 64 an.$strict.Optional.stricter.mod
ee60 65 0a 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 20 20 20 20 20 20 20 20 20 20 e.....*.@return.mixed...........
ee80 46 61 6c 73 65 20 69 66 20 69 74 20 66 61 69 6c 73 2c 20 61 6e 20 69 6e 64 65 78 65 64 20 61 72 False.if.it.fails,.an.indexed.ar
eea0 72 61 79 0a 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ray.....*.......................
eec0 20 20 75 73 65 72 6e 61 6d 65 2f 64 6f 6d 61 69 6e 20 69 66 20 69 74 20 6d 61 74 63 68 65 73 0a ..username/domain.if.it.matches.
eee0 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 61 6c 69 64 49 6e 65 74 41 ....*/.....function.isValidInetA
ef00 64 64 72 65 73 73 28 24 64 61 74 61 2c 20 24 73 74 72 69 63 74 20 3d 20 66 61 6c 73 65 29 0a 20 ddress($data,.$strict.=.false)..
ef20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 24 72 65 67 65 78 20 3d 20 24 73 74 72 69 63 74 20 3f 20 ...{.........$regex.=.$strict.?.
ef40 27 2f 5e 28 5b 2e 30 2d 39 61 2d 7a 5f 2d 5d 2b 29 40 28 28 5b 30 2d 39 61 2d 7a 2d 5d 2b 5c 2e '/^([.0-9a-z_-]+)@(([0-9a-z-]+\.
ef60 29 2b 5b 30 2d 39 61 2d 7a 5d 7b 32 2c 34 7d 29 24 2f 69 27 20 3a 20 27 2f 5e 28 5b 2a 2b 21 2e )+[0-9a-z]{2,4})$/i'.:.'/^([*+!.
ef80 26 23 24 7c 5c 27 5c 5c 25 5c 2f 30 2d 39 61 2d 7a 5e 5f 60 7b 7d 3d 3f 7e 3a 2d 5d 2b 29 40 28 &#$|\'\\%\/0-9a-z^_`{}=?~:-]+)@(
efa0 28 5b 30 2d 39 61 2d 7a 2d 5d 2b 5c 2e 29 2b 5b 30 2d 39 61 2d 7a 5d 7b 32 2c 34 7d 29 24 2f 69 ([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i
efc0 27 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 70 72 65 67 5f 6d 61 74 63 68 28 24 72 65 67 65 78 ';.........if.(preg_match($regex
efe0 2c 20 74 72 69 6d 28 24 64 61 74 61 29 2c 20 24 6d 61 74 63 68 65 73 29 29 20 7b 0a 20 20 20 20 ,.trim($data),.$matches)).{.....
f000 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 72 61 79 28 24 6d 61 74 63 68 65 73 5b 31 5d ........return.array($matches[1]
f020 2c 20 24 6d 61 74 63 68 65 73 5b 32 5d 29 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b ,.$matches[2]);.........}.else.{
f040 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 .............return.false;......
f060 20 20 20 7d 0a 20 20 20 20 7d 0a 7d 0a 3f 3e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...}.....}.}.?>.................
f080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................