summaryrefslogtreecommitdiff
path: root/pear/packages/Mail-1.0.1.tar
blob: 7716adb9205cf59db7ed5f72a6f47dcea4104606 (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 36 34 20 00 20 20 20 20 20 30 20 00 20 20 20 37 36 37 20 00 20 20 20 20 ....100664.......0.....767......
0080 20 20 20 33 30 33 33 20 20 37 35 32 30 35 33 32 36 36 33 20 20 20 36 33 30 30 20 00 00 00 00 00 ...3033..7520532663...6300......
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 3c 2f 6d 61 69 6e 74 61 69 6e 65 72 73 3e 0a 20 20 3c 72 65 6c 65 61 73 65 3e 0a 20 20 20 20 3c </maintainers>...<release>.....<
0480 76 65 72 73 69 6f 6e 3e 31 2e 30 2e 31 3c 2f 76 65 72 73 69 6f 6e 3e 0a 20 20 20 20 3c 64 61 74 version>1.0.1</version>.....<dat
04a0 65 3e 32 30 30 32 2d 30 37 2d 32 37 3c 2f 64 61 74 65 3e 0a 20 20 20 20 3c 6c 69 63 65 6e 73 65 e>2002-07-27</date>.....<license
04c0 3e 50 48 50 2f 42 53 44 3c 2f 6c 69 63 65 6e 73 65 3e 0a 20 20 20 20 3c 73 74 61 74 65 3e 73 74 >PHP/BSD</license>.....<state>st
04e0 61 62 6c 65 3c 2f 73 74 61 74 65 3e 0a 20 20 20 20 3c 6e 6f 74 65 73 3e 4c 69 63 65 6e 73 65 20 able</state>.....<notes>License.
0500 63 68 61 6e 67 65 20 66 6f 72 20 52 46 43 38 32 32 2e 70 68 70 3c 2f 6e 6f 74 65 73 3e 0a 20 20 change.for.RFC822.php</notes>...
0520 20 20 3c 64 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 ..<deps>.......<dep.type="pkg".r
0540 65 6c 3d 22 68 61 73 22 3e 4e 65 74 5f 53 4d 54 50 3c 2f 64 65 70 3e 0a 20 20 20 20 3c 2f 64 65 el="has">Net_SMTP</dep>.....</de
0560 70 73 3e 0a 20 20 20 20 3c 66 69 6c 65 6c 69 73 74 3e 0a 20 20 20 20 20 20 3c 66 69 6c 65 20 72 ps>.....<filelist>.......<file.r
0580 6f 6c 65 3d 22 70 68 70 22 20 6d 64 35 73 75 6d 3d 22 33 35 30 30 32 38 62 38 64 65 63 35 61 34 ole="php".md5sum="350028b8dec5a4
05a0 36 39 30 33 62 36 38 32 31 39 61 39 62 39 66 62 38 64 22 20 6e 61 6d 65 3d 22 4d 61 69 6c 2e 70 6903b68219a9b9fb8d".name="Mail.p
05c0 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 6d 64 35 hp"/>.......<file.role="php".md5
05e0 73 75 6d 3d 22 36 33 38 32 64 31 36 30 64 37 63 38 31 63 65 65 38 34 37 63 63 63 62 37 34 63 66 sum="6382d160d7c81cee847cccb74cf
0600 30 63 65 30 62 22 20 6e 61 6d 65 3d 22 4d 61 69 6c 2f 6d 61 69 6c 2e 70 68 70 22 2f 3e 0a 20 20 0ce0b".name="Mail/mail.php"/>...
0620 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 61 33 65 ....<file.role="php".md5sum="a3e
0640 37 62 39 38 33 31 61 61 37 64 61 35 62 63 62 61 37 62 33 36 30 61 39 61 63 37 33 39 66 22 20 6e 7b9831aa7da5bcba7b360a9ac739f".n
0660 61 6d 65 3d 22 4d 61 69 6c 2f 73 65 6e 64 6d 61 69 6c 2e 70 68 70 22 2f 3e 0a 20 20 20 20 20 20 ame="Mail/sendmail.php"/>.......
0680 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 39 34 63 32 35 35 31 <file.role="php".md5sum="94c2551
06a0 39 31 63 61 38 61 39 35 61 32 62 31 30 34 30 63 33 36 62 61 36 64 39 39 64 22 20 6e 61 6d 65 3d 91ca8a95a2b1040c36ba6d99d".name=
06c0 22 4d 61 69 6c 2f 73 6d 74 70 2e 70 68 70 22 2f 3e 0a 20 20 20 20 20 20 3c 66 69 6c 65 20 72 6f "Mail/smtp.php"/>.......<file.ro
06e0 6c 65 3d 22 70 68 70 22 20 6d 64 35 73 75 6d 3d 22 31 35 62 62 38 62 34 30 63 39 38 65 62 63 38 le="php".md5sum="15bb8b40c98ebc8
0700 30 39 36 65 65 32 35 64 38 63 32 36 62 32 39 31 36 22 20 6e 61 6d 65 3d 22 4d 61 69 6c 2f 52 46 096ee25d8c26b2916".name="Mail/RF
0720 43 38 32 32 2e 70 68 70 22 2f 3e 0a 20 20 20 20 3c 2f 66 69 6c 65 6c 69 73 74 3e 0a 20 20 3c 2f C822.php"/>.....</filelist>...</
0740 72 65 6c 65 61 73 65 3e 0a 20 20 3c 63 68 61 6e 67 65 6c 6f 67 3e 0a 20 20 20 20 3c 72 65 6c 65 release>...<changelog>.....<rele
0760 61 73 65 3e 0a 20 20 20 20 20 20 3c 76 65 72 73 69 6f 6e 3e 31 2e 30 3c 2f 76 65 72 73 69 6f 6e ase>.......<version>1.0</version
0780 3e 0a 20 20 20 20 20 20 3c 64 61 74 65 3e 32 30 30 32 2d 30 36 2d 30 36 3c 2f 64 61 74 65 3e 0a >.......<date>2002-06-06</date>.
07a0 20 20 20 20 20 20 3c 73 74 61 74 65 3e 73 74 61 62 6c 65 3c 2f 73 74 61 74 65 3e 0a 20 20 20 20 ......<state>stable</state>.....
07c0 20 20 3c 6e 6f 74 65 73 3e 49 6e 69 74 69 61 6c 20 72 65 6c 65 61 73 65 20 61 73 20 50 45 41 52 ..<notes>Initial.release.as.PEAR
07e0 20 70 61 63 6b 61 67 65 0a 3c 2f 6e 6f 74 65 73 3e 0a 20 20 20 20 3c 2f 72 65 6c 65 61 73 65 3e .package.</notes>.....</release>
0800 0a 20 20 3c 2f 63 68 61 6e 67 65 6c 6f 67 3e 0a 3c 2f 70 61 63 6b 61 67 65 3e 0a 00 00 00 00 00 ...</changelog>.</package>......
0820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a00 4d 61 69 6c 2d 31 2e 30 2e 31 2f 4d 61 69 6c 2e 70 68 70 00 00 00 00 00 00 00 00 00 00 00 00 00 Mail-1.0.1/Mail.php.............
0a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a60 00 00 00 00 31 30 30 36 36 34 20 00 20 20 20 20 20 30 20 00 20 20 20 37 36 37 20 00 20 20 20 20 ....100664.......0.....767......
0a80 20 20 31 36 31 35 37 20 20 37 35 31 36 34 36 32 32 36 35 20 20 20 37 31 33 33 20 00 00 00 00 00 ..16157..7516462265...7133......
0aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 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.//.//.+-------------------
0c20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0c40 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
0c60 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.........................
0c80 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 ...............................|
0ca0 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 .//.+---------------------------
0cc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0ce0 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).
0d00 31 39 39 37 2d 32 30 30 32 20 54 68 65 20 50 48 50 20 47 72 6f 75 70 20 20 20 20 20 20 20 20 20 1997-2002.The.PHP.Group.........
0d20 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 .......................|.//.+---
0d40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0d60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0d80 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
0da0 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
0dc0 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
0de0 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
0e00 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........|.//.
0e20 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
0e40 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....................
0e60 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
0e80 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...............
0ea0 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
0ec0 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
0ee0 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...|
0f00 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
0f20 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
0f40 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
0f60 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
0f80 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................|.//.+---
0fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
0fe0 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
1000 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>.............
1020 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 ...............|.//.+-----------
1040 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
1060 2d 2d 2d 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 ---------------------------+.//.
1080 2f 2f 20 24 49 64 3a 20 4d 61 69 6c 2e 70 68 70 2c 76 20 31 2e 31 20 32 30 30 32 2f 30 37 2f 32 //.$Id:.Mail.php,v.1.1.2002/07/2
10a0 31 20 30 37 3a 33 37 3a 32 35 20 73 73 62 20 45 78 70 20 24 0a 0a 72 65 71 75 69 72 65 5f 6f 6e 1.07:37:25.ssb.Exp.$..require_on
10c0 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
10e0 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
1100 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
1120 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.
1140 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..*
1160 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
1180 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
11a0 72 73 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e 31 20 24 0a 20 2a 20 40 70 61 63 6b 61 rsion.$Revision:.1.1.$..*.@packa
11c0 67 65 20 4d 61 69 6c 0a 20 2a 2f 0a 63 6c 61 73 73 20 4d 61 69 6c 20 65 78 74 65 6e 64 73 20 50 ge.Mail..*/.class.Mail.extends.P
11e0 45 41 52 0a 7b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 50 72 6f 76 69 64 65 73 20 61 6e EAR.{...../**......*.Provides.an
1200 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 20 4d 61 69 6c 3a 3a .interface.for.generating.Mail::
1220 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 2a 20 74 79 70 65 73 .objects.of.various......*.types
1240 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 6e 67 20 24 64 72 ......*......*.@param.string.$dr
1260 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 62 6a 65 63 74 20 74 iver.The.kind.of.Mail::.object.t
1280 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 72 61 6d 20 61 72 72 o.instantiate.......*.@param.arr
12a0 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 73 20 74 6f 20 70 61 ay..$params.The.parameters.to.pa
12c0 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 20 20 20 20 20 2a 20 ss.to.the.Mail::.object.......*.
12e0 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 74 61 6e 63 65 20 6f @return.object.Mail.a.instance.o
1300 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 66 61 69 6c 73 20 61 f.the.driver.class.or.if.fails.a
1320 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 73 20 70 75 62 6c 69 .PEAR.Error......*.@access.publi
1340 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 63 74 6f 72 79 28 24 c......*/.....function.factory($
1360 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 29 0a 20 20 20 20 7b driver,.$params.=.array()).....{
1380 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 6f 77 65 72 28 24 64 .........$driver.=.strtolower($d
13a0 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 6f 6e 63 65 20 27 4d river);.........@include_once.'M
13c0 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 0a 20 20 20 20 20 20 ail/'...$driver...'.php';.......
13e0 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 76 65 72 3b 0a 20 20 ..$class.=.'Mail_'...$driver;...
1400 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 6c 61 73 73 29 29 20 ......if.(class_exists($class)).
1420 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 24 63 6c 61 73 73 28 {.............return.new.$class(
1440 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 7b 0a 20 20 20 20 20 $params);.........}.else.{......
1460 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 45 72 72 6f 72 28 27 .......return.PEAR::raiseError('
1480 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 64 72 69 76 65 72 20 Unable.to.find.class.for.driver.
14a0 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 20 20 20 7d 0a 0a 20 '...$driver);.........}.....}...
14c0 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 4d 61 69 6c 3a 3a 73 .../**......*.Implements.Mail::s
14e0 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 73 20 62 75 69 6c 74 end().function.using.php's.built
1500 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 2e 0a 20 20 20 20 20 -in.mail()......*.command.......
1520 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 63 69 70 69 65 6e 74 *......*.@param.mixed.$recipient
1540 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 73 74 20 s.Either.a.comma-seperated.list.
1560 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 20 20 20 of.recipients......*............
1580 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 72 72 61 ..(RFC822.compliant),.or.an.arra
15a0 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 20 20 20 y.of.recipients,......*.........
15c0 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 6d 61 79 .....each.RFC822.valid..This.may
15e0 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 2a 20 20 .contain.recipients.not......*..
1600 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 68 65 61 ............specified.in.the.hea
1620 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 20 20 2a ders,.for.Bcc:,.resending......*
1640 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 20 20 20 ..............messages,.etc.....
1660 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
1680 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 20 77 69 .The.array.of.headers.to.send.wi
16a0 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 20 20 20 th.the.mail,.in.an......*.......
16c0 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 72 65 20 .......associative.array,.where.
16e0 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 20 20 20 the.array.key.is.the......*.....
1700 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 62 6a 65 .........header.name.(ie,.'Subje
1720 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 20 20 2a ct'),.and.the.array.value......*
1740 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 61 6c 75 ..............is.the.header.valu
1760 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 20 20 20 e.(ie,.'test')..The.header......
1780 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 74 68 6f *..............produced.from.tho
17a0 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 20 20 20 se.values.would.be.'Subject:....
17c0 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 2a 0a 20 ..*..............test'.......*..
17e0 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 20 66 75 ....*.@param.string.$body.The.fu
1800 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 69 6e 63 ll.text.of.the.message.body,.inc
1820 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 20 20 20 luding.any......*...............
1840 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 2a 20 40 Mime.parts,.etc.......*......*.@
1860 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 73 75 63 return.mixed.Returns.true.on.suc
1880 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 20 20 20 cess,.or.a.PEAR_Error......*....
18a0 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 69 70 74 ...........containing.a.descript
18c0 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 20 20 20 ive.error.message.on......*.....
18e0 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 63 65 73 ..........failure.......*.@acces
1900 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 65 64 20 75 73 65 20 s.public......*.@deprecated.use.
1920 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 20 20 20 20 2a 2f 0a Mail_mail::send.instead......*/.
1940 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 65 6e 74 73 2c 20 24 ....function.send($recipients,.$
1960 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 20 20 20 20 20 2f 2f headers,.$body).....{.........//
1980 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 20 6f 66 20 72 65 63 .if.we're.passed.an.array.of.rec
19a0 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 20 20 20 20 69 66 20 ipients,.implode.it..........if.
19c0 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)).{.......
19e0 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(',.'
1a00 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);.........}.......
1a20 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 20 6f 66 20 74 68 65 ...//.get.the.Subject.out.of.the
1a40 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 20 63 61 6e 0a 20 20 .headers.array.so.that.we.can...
1a60 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 65 72 61 74 65 20 61 ......//.pass.it.as.a.seperate.a
1a80 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 20 20 24 73 75 62 6a rgument.to.mail()..........$subj
1aa0 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 65 74 28 24 68 65 61 ect.=.'';.........if.(isset($hea
1ac0 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 20 20 20 20 20 20 20 ders['Subject'])).{.............
1ae0 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 65 63 74 27 5d 3b 0a $subject.=.$headers['Subject'];.
1b00 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 73 5b 27 53 75 62 6a ............unset($headers['Subj
1b20 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 20 20 2f 2f 20 66 6c ect']);.........}..........//.fl
1b40 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 20 20 20 20 20 20 6c atten.the.headers.out..........l
1b60 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 6c 3a 3a 70 72 65 70 ist(,$text_headers).=.Mail::prep
1b80 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 20 20 20 20 20 20 72 areHeaders($headers);..........r
1ba0 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 73 75 62 6a 65 63 74 eturn.mail($recipients,.$subject
1bc0 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 0a 20 20 20 20 7d 0a ,.$body,.$text_headers);......}.
1be0 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 72 72 61 79 20 6f 66 ...../**......*.Take.an.array.of
1c00 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 61 20 73 74 72 69 6e .mail.headers.and.return.a.strin
1c20 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 75 73 61 62 6c 65 20 g.containing......*.text.usable.
1c40 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 20 20 2a 0a 20 20 20 in.sending.a.message.......*....
1c60 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 72 ..*.@param.array.$headers.The.ar
1c80 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 2c 20 69 6e 20 61 6e ray.of.headers.to.prepare,.in.an
1ca0 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 20 20 20 20 20 20 20 .associative......*.............
1cc0 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 65 79 20 69 73 20 74 .array,.where.the.array.key.is.t
1ce0 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 2a 20 20 20 20 20 20 he.header.name.(ie,......*......
1d00 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 68 65 20 61 72 72 61 ........'Subject'),.and.the.arra
1d20 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 20 20 2a 20 20 20 20 y.value.is.the.header......*....
1d40 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 74 27 29 2e 20 54 68 ..........value.(ie,.'test')..Th
1d60 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 6f 73 65 0a 20 20 20 e.header.produced.from.those....
1d80 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 6f 75 6c 64 20 62 65 ..*..............values.would.be
1da0 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 20 20 20 20 20 2a 20 .'Subject:.test'.......*......*.
1dc0 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 73 65 20 69 66 20 69 @return.mixed.Returns.false.if.i
1de0 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 73 2c 0a 20 20 20 20 t.encounters.a.bad.address,.....
1e00 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 65 20 72 65 74 75 72 .*...............otherwise.retur
1e20 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 6f 0a 20 20 20 20 20 ns.an.array.containing.two......
1e40 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 20 41 6e 79 20 46 72 *...............elements:.Any.Fr
1e60 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 68 65 61 64 65 72 73 om:.address.found.in.the.headers
1e80 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 64 20 74 68 65 20 70 ,......*...............and.the.p
1ea0 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 68 65 61 64 65 72 73 lain.text.version.of.the.headers
1ec0 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 20 20 20 20 20 2a 2f .......*.@access.private......*/
1ee0 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 65 72 73 28 24 68 65 .....function.prepareHeaders($he
1f00 61 64 65 72 73 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 4c 6f 6f 6b 20 6f 75 74 aders).....{.........//.Look.out
1f20 20 66 6f 72 20 74 68 65 20 46 72 6f 6d 3a 20 76 61 6c 75 65 20 74 6f 20 75 73 65 20 61 6c 6f 6e .for.the.From:.value.to.use.alon
1f40 67 20 74 68 65 20 77 61 79 2e 0a 20 20 20 20 20 20 20 20 24 74 65 78 74 5f 68 65 61 64 65 72 73 g.the.way..........$text_headers
1f60 20 3d 20 27 27 3b 20 20 2f 2f 20 74 65 78 74 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f .=.'';..//.text.representation.o
1f80 66 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 24 66 72 6f 6d 20 3d 20 6e 75 6c 6c 3b 0a f.headers.........$from.=.null;.
1fa0 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 73 20 24 6b .........foreach.($headers.as.$k
1fc0 65 79 20 3d 3e 20 24 76 61 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 6b ey.=>.$val).{.............if.($k
1fe0 65 79 20 3d 3d 20 27 46 72 6f 6d 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ey.==.'From').{.................
2000 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 2e 70 68 70 27 3b 0a include_once.'Mail/RFC822.php';.
2020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 66 72 6f 6d 5f 61 72 72 20 3d 20 4d 61 69 .................$from_arr.=.Mai
2040 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 76 61 6c 2c l_RFC822::parseAddressList($val,
2060 20 27 6c 6f 63 61 6c 68 6f 73 74 27 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 .'localhost',.false);...........
2080 20 20 20 20 20 20 24 66 72 6f 6d 20 3d 20 24 66 72 6f 6d 5f 61 72 72 5b 30 5d 2d 3e 6d 61 69 6c ......$from.=.$from_arr[0]->mail
20a0 62 6f 78 20 2e 20 27 40 27 20 2e 20 24 66 72 6f 6d 5f 61 72 72 5b 30 5d 2d 3e 68 6f 73 74 3b 0a box...'@'...$from_arr[0]->host;.
20c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 73 74 72 28 24 66 72 6f 6d ................if.(strstr($from
20e0 2c 20 27 20 27 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f ,.'.')).{.....................//
2100 20 52 65 6a 65 63 74 20 6f 75 74 72 69 67 68 74 20 65 6e 76 65 6c 6f 70 65 20 46 72 6f 6d 20 61 .Reject.outright.envelope.From.a
2120 64 64 72 65 73 73 65 73 20 77 69 74 68 20 73 70 61 63 65 73 2e 0a 20 20 20 20 20 20 20 20 20 20 ddresses.with.spaces............
2140 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;.........
2160 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 65 78 74 5f ........}.................$text_
2180 68 65 61 64 65 72 73 20 2e 3d 20 24 6b 65 79 20 2e 20 27 3a 20 27 20 2e 20 24 76 61 6c 20 2e 20 headers..=.$key...':.'...$val...
21a0 22 5c 6e 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 24 6b 65 "\n";.............}.else.if.($ke
21c0 79 20 3d 3d 20 27 52 65 63 65 69 76 65 64 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 y.==.'Received').{..............
21e0 20 20 20 2f 2f 20 70 75 74 20 52 65 63 65 69 76 65 64 3a 20 68 65 61 64 65 72 73 20 61 74 20 74 ...//.put.Received:.headers.at.t
2200 68 65 20 74 6f 70 2c 20 73 69 6e 63 65 20 52 65 63 65 69 65 76 65 64 3a 0a 20 20 20 20 20 20 20 he.top,.since.Receieved:........
2220 20 20 20 20 20 20 20 20 20 2f 2f 20 61 66 74 65 72 20 53 75 62 6a 65 63 74 3a 20 69 6e 20 74 68 .........//.after.Subject:.in.th
2240 65 20 68 65 61 64 65 72 20 6f 72 64 65 72 20 69 73 20 73 6f 6d 74 69 6d 65 73 20 75 73 65 64 0a e.header.order.is.somtimes.used.
2260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 73 20 61 20 73 70 61 6d 20 74 72 61 ................//.as.a.spam.tra
2280 70 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 65 78 74 5f 68 65 61 64 65 72 73 p..................$text_headers
22a0 20 3d 20 24 6b 65 79 20 2e 20 27 3a 20 27 20 2e 20 24 76 61 6c 20 2e 20 22 5c 6e 22 20 2e 20 24 .=.$key...':.'...$val..."\n"...$
22c0 74 65 78 74 5f 68 65 61 64 65 72 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 text_headers;.............}.else
22e0 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 65 78 74 5f 68 65 61 64 65 72 73 .{.................$text_headers
2300 20 2e 3d 20 24 6b 65 79 20 2e 20 27 3a 20 27 20 2e 20 24 76 61 6c 20 2e 20 22 5c 6e 22 3b 0a 20 ..=.$key...':.'...$val..."\n";..
2320 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 20 20 20 ...........}.........}..........
2340 72 65 74 75 72 6e 20 61 72 72 61 79 28 24 66 72 6f 6d 2c 20 24 74 65 78 74 5f 68 65 61 64 65 72 return.array($from,.$text_header
2360 73 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 54 61 6b 65 20 61 s);.....}....../**......*.Take.a
2380 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 73 65 20 74 68 65 .set.of.recipients.and.parse.the
23a0 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 20 20 20 20 2a 20 m,.returning.an.array.of......*.
23c0 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 74 68 73 29 20 74 bare.addresses.(forward.paths).t
23e0 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 61 69 6c 0a 20 20 hat.can.be.passed.to.sendmail...
2400 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 68 20 74 68 65 20 ...*.or.an.smtp.server.with.the.
2420 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 20 20 20 20 2a 20 rcpt.to:.command.......*......*.
2440 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 61 2d 73 65 70 65 @param.mixed.Either.a.comma-sepe
2460 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 20 20 20 20 2a 20 rated.list.of.recipients......*.
2480 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 69 61 6e 74 29 2c .............(RFC822.compliant),
24a0 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 2c 0a 20 20 20 20 .or.an.array.of.recipients,.....
24c0 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 32 20 76 61 6c 69 .*..............each.RFC822.vali
24e0 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 72 72 61 79 20 41 d.......*......*.@return.array.A
2500 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 62 61 72 65 20 61 n.array.of.forward.paths.(bare.a
2520 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 70 72 69 76 61 74 ddresses).......*.@access.privat
2540 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 73 65 52 65 63 69 e......*/.....function.parseReci
2560 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 20 20 20 20 20 20 pients($recipients).....{.......
2580 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 2e 70 68 70 27 ..include_once.'Mail/RFC822.php'
25a0 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 73 65 64 20 61 6e ;..........//.if.we're.passed.an
25c0 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 72 65 20 76 61 6c .array,.assume.addresses.are.val
25e0 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 74 68 65 6d 20 62 id.and.........//.implode.them.b
2600 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 28 69 73 5f 61 72 efore.parsing..........if.(is_ar
2620 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 20 20 20 20 20 20 ray($recipients)).{.............
2640 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 2c 20 24 72 65 63 $recipients.=.implode(',.',.$rec
2660 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 20 20 20 2f 2f 20 ipients);.........}..........//.
2680 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 6f 75 74 20 61 6c Parse.recipients,.leaving.out.al
26a0 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 20 20 20 20 20 20 l.personal.info..This.is........
26c0 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 74 63 2e 20 41 6c .//.for.smtp.recipients,.etc..Al
26e0 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 61 74 69 6f 6e 0a l.relevant.personal.information.
2700 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 62 65 20 69 6e 20 ........//.should.already.be.in.
2720 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 65 73 73 65 73 20 the.headers..........$addresses.
2740 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 73 74 28 =.Mail_RFC822::parseAddressList(
2760 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 66 61 6c 73 65 29 $recipients,.'localhost',.false)
2780 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 72 61 79 28 29 3b ;.........$recipients.=.array();
27a0 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 72 65 73 73 65 73 .........if.(is_array($addresses
27c0 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 24 61 64 64 72 65 )).{.............foreach.($addre
27e0 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 20 20 20 20 20 24 sses.as.$ob).{.................$
2800 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 78 20 2e 20 27 40 recipients[].=.$ob->mailbox...'@
2820 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 20 7d 0a 20 20 20 '...$ob->host;.............}....
2840 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 63 69 70 69 65 6e .....}..........return.$recipien
2860 74 73 3b 0a 20 20 20 20 7d 0a 0a 7d 0a 3f 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ts;.....}..}.?>.................
2880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a00 4d 61 69 6c 2d 31 2e 30 2e 31 2f 4d 61 69 6c 2f 6d 61 69 6c 2e 70 68 70 00 00 00 00 00 00 00 00 Mail-1.0.1/Mail/mail.php........
2a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a60 00 00 00 00 31 30 30 36 36 34 20 00 20 20 20 20 20 30 20 00 20 20 20 37 36 37 20 00 20 20 20 20 ....100664.......0.....767......
2a80 20 20 20 36 32 32 33 20 20 37 35 31 36 34 36 32 32 36 35 20 20 31 30 30 32 36 20 00 00 00 00 00 ...6223..7516462265..10026......
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 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.//.//.+-------------------
2c20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2c40 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
2c60 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.........................
2c80 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 ...............................|
2ca0 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 .//.+---------------------------
2cc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2ce0 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).
2d00 31 39 39 37 2d 32 30 30 32 20 54 68 65 20 50 48 50 20 47 72 6f 75 70 20 20 20 20 20 20 20 20 20 1997-2002.The.PHP.Group.........
2d20 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 .......................|.//.+---
2d40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2d60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2d80 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
2da0 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
2dc0 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
2de0 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
2e00 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........|.//.
2e20 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
2e40 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....................
2e60 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
2e80 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...............
2ea0 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
2ec0 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
2ee0 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...|
2f00 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
2f20 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
2f40 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
2f60 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
2f80 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................|.//.+---
2fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
2fe0 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
3000 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>.............
3020 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 ...............|.//.+-----------
3040 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3060 2d 2d 2d 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 ---------------------------+.//.
3080 2f 2f 20 24 49 64 3a 20 6d 61 69 6c 2e 70 68 70 2c 76 20 31 2e 31 20 32 30 30 32 2f 30 37 2f 32 //.$Id:.mail.php,v.1.1.2002/07/2
30a0 31 20 30 37 3a 33 37 3a 32 35 20 73 73 62 20 45 78 70 20 24 0a 0a 72 65 71 75 69 72 65 5f 6f 6e 1.07:37:25.ssb.Exp.$..require_on
30c0 63 65 20 28 27 4d 61 69 6c 2e 70 68 70 27 29 3b 0a 0a 2f 2a 2a 0a 20 2a 20 69 6e 74 65 72 6e 61 ce.('Mail.php');../**..*.interna
30e0 6c 20 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 l.PHP-mail().implementation.of.t
3100 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 0a 20 2a 20 40 61 63 he.PEAR.Mail::.interface...*.@ac
3120 63 65 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 cess.public..*.@package.Mail..*.
3140 40 76 65 72 73 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e 31 20 24 0a 20 2a 2f 0a 20 0a @version.$Revision:.1.1.$..*/...
3160 20 63 6c 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 20 7b 0a .class.Mail_mail.extends.Mail.{.
3180 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 5f 6d 61 69 6c ./**......*.Implements.Mail_mail
31a0 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 73 20 62 75 ::send().function.using.php's.bu
31c0 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 2e 0a 20 20 ilt-in.mail()......*.command....
31e0 20 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 ...*.......*.@param.mixed.$recip
3200 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 64 20 6c ients.Either.a.comma-seperated.l
3220 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 20 20 20 ist.of.recipients......*........
3240 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 61 6e 20 ......(RFC822.compliant),.or.an.
3260 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 20 20 20 array.of.recipients,......*.....
3280 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 68 69 73 .........each.RFC822.valid..This
32a0 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 20 20 20 .may.contain.recipients.not.....
32c0 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 74 68 65 .*..............specified.in.the
32e0 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 0a 20 20 .headers,.for.Bcc:,.resending...
3300 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 74 63 2e ...*..............messages,.etc.
3320 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 68 65 61 ......*......*.@param.array.$hea
3340 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 73 65 6e ders.The.array.of.headers.to.sen
3360 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 20 20 20 d.with.the.mail,.in.an......*...
3380 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 20 77 68 ...........associative.array,.wh
33a0 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 20 2a 20 ere.the.array.key.is.the......*.
33c0 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 20 27 53 .............header.name.(ie,.'S
33e0 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 0a 20 20 ubject'),.and.the.array.value...
3400 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 65 72 20 ...*..............is.the.header.
3420 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 72 0a 20 value.(ie,.'test')..The.header..
3440 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 72 6f 6d ....*..............produced.from
3460 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 63 74 3a .those.values.would.be.'Subject:
3480 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 20 20 20 ......*..............test'......
34a0 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 20 54 68 .*......*.@param.string.$body.Th
34c0 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 64 79 2c e.full.text.of.the.message.body,
34e0 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 20 20 20 .including.any......*...........
3500 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 20 20 20 ....Mime.parts,.etc.......*.....
3520 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 20 6f 6e .*.@return.mixed.Returns.true.on
3540 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 20 20 2a .success,.or.a.PEAR_Error......*
3560 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 65 73 63 ...............containing.a.desc
3580 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 20 2a 20 riptive.error.message.on......*.
35a0 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 20 40 61 ..............failure.......*.@a
35c0 63 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 ccess.public......*/......functi
35e0 6f 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 on.send($recipients,.$headers,.$
3600 62 6f 64 79 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 66 20 77 65 27 72 65 20 body).....{.........//.if.we're.
3620 70 61 73 73 65 64 20 61 6e 20 61 72 72 61 79 20 6f 66 20 72 65 63 69 70 69 65 6e 74 73 2c 20 69 passed.an.array.of.recipients,.i
3640 6d 70 6c 6f 64 65 20 69 74 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 5f 61 72 72 61 79 28 mplode.it..........if.(is_array(
3660 24 72 65 63 69 70 69 65 6e 74 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 65 63 $recipients)).{.............$rec
3680 69 70 69 65 6e 74 73 20 3d 20 69 6d 70 6c 6f 64 65 28 27 2c 20 27 2c 20 24 72 65 63 69 70 69 65 ipients.=.implode(',.',.$recipie
36a0 6e 74 73 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 nts);.........}.................
36c0 20 2f 2f 20 67 65 74 20 74 68 65 20 53 75 62 6a 65 63 74 20 6f 75 74 20 6f 66 20 74 68 65 20 68 .//.get.the.Subject.out.of.the.h
36e0 65 61 64 65 72 73 20 61 72 72 61 79 20 73 6f 20 74 68 61 74 20 77 65 20 63 61 6e 0a 20 20 20 20 eaders.array.so.that.we.can.....
3700 20 20 20 20 2f 2f 20 70 61 73 73 20 69 74 20 61 73 20 61 20 73 65 70 65 72 61 74 65 20 61 72 67 ....//.pass.it.as.a.seperate.arg
3720 75 6d 65 6e 74 20 74 6f 20 6d 61 69 6c 28 29 2e 0a 20 20 20 20 20 20 20 20 24 73 75 62 6a 65 63 ument.to.mail()..........$subjec
3740 74 20 3d 20 27 27 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 68 65 61 64 65 t.=.'';.........if.(isset($heade
3760 72 73 5b 27 53 75 62 6a 65 63 74 27 5d 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 rs['Subject'])).{.............$s
3780 75 62 6a 65 63 74 20 3d 20 24 68 65 61 64 65 72 73 5b 27 53 75 62 6a 65 63 74 27 5d 3b 0a 20 20 ubject.=.$headers['Subject'];...
37a0 20 20 20 20 20 20 20 20 20 20 75 6e 73 65 74 28 24 68 65 61 64 65 72 73 5b 27 53 75 62 6a 65 63 ..........unset($headers['Subjec
37c0 74 27 5d 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 t']);.........}.................
37e0 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 20 .//.flatten.the.headers.out.....
3800 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 6c .....list(,$text_headers).=.Mail
3820 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 20 20 20 20 ::prepareHeaders($headers);.....
3840 20 20 20 20 0a 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 .............return.mail($recipi
3860 65 6e 74 73 2c 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 ents,.$subject,.$body,.$text_hea
3880 64 65 72 73 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a 7d 00 00 00 00 00 00 00 00 00 00 00 00 00 ders);.....}......}.............
38a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
38e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
39e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a00 4d 61 69 6c 2d 31 2e 30 2e 31 2f 4d 61 69 6c 2f 73 65 6e 64 6d 61 69 6c 2e 70 68 70 00 00 00 00 Mail-1.0.1/Mail/sendmail.php....
3a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3a60 00 00 00 00 31 30 30 36 36 34 20 00 20 20 20 20 20 30 20 00 20 20 20 37 36 37 20 00 20 20 20 20 ....100664.......0.....767......
3a80 20 20 31 31 37 35 36 20 20 37 35 31 36 34 36 32 32 36 35 20 20 31 30 37 32 37 20 00 00 00 00 00 ..11756..7516462265..10727......
3aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3c00 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.//.//.+-------------------
3c20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3c40 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
3c60 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.........................
3c80 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 ...............................|
3ca0 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 .//.+---------------------------
3cc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3ce0 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).
3d00 31 39 39 37 2d 32 30 30 32 20 54 68 65 20 50 48 50 20 47 72 6f 75 70 20 20 20 20 20 20 20 20 20 1997-2002.The.PHP.Group.........
3d20 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 .......................|.//.+---
3d40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3d60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3d80 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
3da0 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
3dc0 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
3de0 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
3e00 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........|.//.
3e20 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
3e40 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....................
3e60 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
3e80 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...............
3ea0 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
3ec0 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
3ee0 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...|
3f00 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
3f20 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
3f40 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
3f60 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
3f80 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................|.//.+---
3fa0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3fc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
3fe0 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
4000 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>.............
4020 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 ...............|.//.+-----------
4040 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
4060 2d 2d 2d 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
4080 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
40a0 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
40c0 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.
40e0 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
4100 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e 31 20 24 0a 20 2a 2f 0a 63 6c 61 73 73 20 4d ion.$Revision:.1.1.$..*/.class.M
4120 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.{.....
4140 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
4160 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
4180 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...
41a0 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
41c0 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
41e0 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
4200 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
4220 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
4240 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
4260 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
4280 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.=.'';......./**......*.
42a0 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
42c0 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
42e0 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...
4300 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
4320 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:......*...
4340 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.
4360 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...
4380 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
43a0 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
43c0 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
43e0 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.
4400 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......*..
4420 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.
4440 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
4460 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.$
4480 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...
44a0 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
44c0 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
44e0 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
4500 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.
4520 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......*/..
4540 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
4560 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
4580 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
45a0 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_
45c0 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
45e0 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
4600 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
4620 67 73 27 5d 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 6d 70 gs'];.....}......./**......*.Imp
4640 6c 65 6d 65 6e 74 73 20 4d 61 69 6c 3a 3a 73 65 6e 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 75 73 lements.Mail::send().function.us
4660 69 6e 67 20 74 68 65 20 73 65 6e 64 6d 61 69 6c 0a 20 20 20 20 20 2a 20 63 6f 6d 6d 61 6e 64 2d ing.the.sendmail......*.command-
4680 6c 69 6e 65 20 62 69 6e 61 72 79 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 70 61 72 line.binary.......*.......*.@par
46a0 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 61 20 63 6f am.mixed.$recipients.Either.a.co
46c0 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 65 6e 74 73 mma-seperated.list.of.recipients
46e0 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 20 63 6f 6d ......*..............(RFC822.com
4700 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 70 69 65 6e pliant),.or.an.array.of.recipien
4720 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 20 52 46 43 ts,......*..............each.RFC
4740 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 72 65 63 69 822.valid..This.may.contain.reci
4760 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 20 20 20 73 pients.not......*..............s
4780 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 20 42 63 63 pecified.in.the.headers,.for.Bcc
47a0 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 20 20 20 20 :,.resending......*.............
47c0 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 2a 20 40 70 .messages,.etc.......*......*.@p
47e0 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 79 20 6f 66 aram.array.$headers.The.array.of
4800 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 69 6c 2c 20 .headers.to.send.with.the.mail,.
4820 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 73 6f 63 69 in.an......*..............associ
4840 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 20 6b 65 79 ative.array,.where.the.array.key
4860 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 68 65 61 64 .is.the......*..............head
4880 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 20 74 68 65 er.name.(ie,.'Subject'),.and.the
48a0 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 20 20 20 20 .array.value......*.............
48c0 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 65 73 74 27 .is.the.header.value.(ie,.'test'
48e0 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 20 20 20 20 )..The.header......*............
4900 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 20 77 6f 75 ..produced.from.those.values.wou
4920 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 20 20 20 20 ld.be.'Subject:......*..........
4940 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 72 61 6d 20 ....test'.......*......*.@param.
4960 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 66 20 74 68 string.$body.The.full.text.of.th
4980 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 79 0a 20 20 e.message.body,.including.any...
49a0 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 73 2c 20 65 ...*...............Mime.parts,.e
49c0 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 78 65 64 20 tc.......*......*.@return.mixed.
49e0 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 61 20 50 45 Returns.true.on.success,.or.a.PE
4a00 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 20 20 63 6f AR_Error......*...............co
4a20 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 20 6d 65 73 ntaining.a.descriptive.error.mes
4a40 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 20 66 61 69 sage.on......*...............fai
4a60 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 20 20 20 20 lure.......*.@access.public.....
4a80 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 70 69 65 6e .*/......function.send($recipien
4aa0 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 20 20 ts,.$headers,.$body).....{......
4ac0 20 20 20 24 72 65 63 69 70 69 65 6e 74 73 20 3d 20 65 73 63 61 70 65 53 68 65 6c 6c 43 6d 64 28 ...$recipients.=.escapeShellCmd(
4ae0 69 6d 70 6c 6f 64 65 28 27 20 27 2c 20 24 74 68 69 73 2d 3e 70 61 72 73 65 52 65 63 69 70 69 65 implode('.',.$this->parseRecipie
4b00 6e 74 73 28 24 72 65 63 69 70 69 65 6e 74 73 29 29 29 3b 0a 20 20 20 20 20 20 20 20 0a 20 20 20 nts($recipients)));.............
4b20 20 20 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 .....list($from,.$text_headers).
4b40 3d 20 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 =.$this->prepareHeaders($headers
4b60 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 69 73 73 65 74 28 24 66 72 6f 6d 29 29 20 7b 0a );.........if.(!isset($from)).{.
4b80 20 20 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 ............return.new.PEAR_Erro
4ba0 72 28 27 4e 6f 20 66 72 6f 6d 20 61 64 64 72 65 73 73 20 67 69 76 65 6e 2e 27 29 3b 0a 20 20 20 r('No.from.address.given.');....
4bc0 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20 28 73 74 72 73 74 72 28 24 66 72 6f 6d 2c 20 27 20 27 .....}.elseif.(strstr($from,.'.'
4be0 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
4c00 72 6f 6d 2c 20 27 3b 27 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 rom,.';').||...................s
4c20 74 72 73 74 72 28 24 66 72 6f 6d 2c 20 27 26 27 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 trstr($from,.'&').||............
4c40 20 20 20 20 20 20 20 73 74 72 73 74 72 28 24 66 72 6f 6d 2c 20 27 60 27 29 29 20 7b 0a 20 20 20 .......strstr($from,.'`')).{....
4c60 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 27 .........return.new.PEAR_Error('
4c80 46 72 6f 6d 20 61 64 64 72 65 73 73 20 73 70 65 63 69 66 69 65 64 20 77 69 74 68 20 64 61 6e 67 From.address.specified.with.dang
4ca0 65 72 6f 75 73 20 63 68 61 72 61 63 74 65 72 73 2e 27 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 erous.characters.');.........}..
4cc0 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 24 72 65 73 75 6c 74 20 3d 20 30 3b 0a 20 20 20 ................$result.=.0;....
4ce0 20 20 20 20 20 69 66 20 28 40 69 73 5f 65 78 65 63 75 74 61 62 6c 65 28 24 74 68 69 73 2d 3e 73 .....if.(@is_executable($this->s
4d00 65 6e 64 6d 61 69 6c 5f 70 61 74 68 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 66 72 endmail_path)).{.............$fr
4d20 6f 6d 20 3d 20 65 73 63 61 70 65 53 68 65 6c 6c 43 6d 64 28 24 66 72 6f 6d 29 3b 0a 20 20 20 20 om.=.escapeShellCmd($from);.....
4d40 20 20 20 20 20 20 20 20 24 6d 61 69 6c 20 3d 20 70 6f 70 65 6e 28 24 74 68 69 73 2d 3e 73 65 6e ........$mail.=.popen($this->sen
4d60 64 6d 61 69 6c 5f 70 61 74 68 20 2e 20 28 21 65 6d 70 74 79 28 24 74 68 69 73 2d 3e 73 65 6e 64 dmail_path...(!empty($this->send
4d80 6d 61 69 6c 5f 61 72 67 73 29 20 3f 20 27 20 27 20 2e 20 24 74 68 69 73 2d 3e 73 65 6e 64 6d 61 mail_args).?.'.'...$this->sendma
4da0 69 6c 5f 61 72 67 73 20 3a 20 27 27 29 20 2e 20 22 20 2d 66 24 66 72 6f 6d 20 2d 2d 20 24 72 65 il_args.:.'')...".-f$from.--.$re
4dc0 63 69 70 69 65 6e 74 73 22 2c 20 27 77 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 70 75 cipients",.'w');.............fpu
4de0 74 73 28 24 6d 61 69 6c 2c 20 24 74 65 78 74 5f 68 65 61 64 65 72 73 29 3b 0a 20 20 20 20 20 20 ts($mail,.$text_headers);.......
4e00 20 20 20 20 20 20 66 70 75 74 73 28 24 6d 61 69 6c 2c 20 22 5c 6e 22 29 3b 20 20 2f 2f 20 6e 65 ......fputs($mail,."\n");..//.ne
4e20 77 6c 69 6e 65 20 74 6f 20 65 6e 64 20 74 68 65 20 68 65 61 64 65 72 73 20 73 65 63 74 69 6f 6e wline.to.end.the.headers.section
4e40 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 62 6f 64 79 29 .............fputs($mail,.$body)
4e60 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 65 73 75 6c 74 20 3d 20 70 63 6c 6f 73 65 28 24 ;.............$result.=.pclose($
4e80 6d 61 69 6c 29 20 3e 3e 20 38 20 26 20 30 78 46 46 3b 20 2f 2f 20 6e 65 65 64 20 74 6f 20 73 68 mail).>>.8.&.0xFF;.//.need.to.sh
4ea0 69 66 74 20 74 68 65 20 70 63 6c 6f 73 65 20 72 65 73 75 6c 74 20 74 6f 20 67 65 74 20 74 68 65 ift.the.pclose.result.to.get.the
4ec0 20 65 78 69 74 20 63 6f 64 65 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 .exit.code.........}.else.{.....
4ee0 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 27 73 ........return.new.PEAR_Error('s
4f00 65 6e 64 6d 61 69 6c 20 5b 27 20 2e 20 24 74 68 69 73 2d 3e 73 65 6e 64 6d 61 69 6c 5f 70 61 74 endmail.['...$this->sendmail_pat
4f20 68 20 2e 20 27 5d 20 6e 6f 74 20 65 78 65 63 75 74 61 62 6c 65 27 29 3b 0a 20 20 20 20 20 20 20 h...'].not.executable');........
4f40 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 72 65 73 75 6c 74 20 .}..................if.($result.
4f60 21 3d 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 6e 65 77 20 50 !=.0).{.............return.new.P
4f80 45 41 52 5f 45 72 72 6f 72 28 27 73 65 6e 64 6d 61 69 6c 20 72 65 74 75 72 6e 65 64 20 65 72 72 EAR_Error('sendmail.returned.err
4fa0 6f 72 20 63 6f 64 65 20 27 20 2e 20 24 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a or.code.'...$result);.........}.
4fc0 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 .................return.true;...
4fe0 20 20 7d 0a 20 20 20 20 0a 7d 0a 3f 3e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..}......}.?>...................
5000 4d 61 69 6c 2d 31 2e 30 2e 31 2f 4d 61 69 6c 2f 73 6d 74 70 2e 70 68 70 00 00 00 00 00 00 00 00 Mail-1.0.1/Mail/smtp.php........
5020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5060 00 00 00 00 31 30 30 36 36 34 20 00 20 20 20 20 20 30 20 00 20 20 20 37 36 37 20 00 20 20 20 20 ....100664.......0.....767......
5080 20 20 31 33 30 34 32 20 20 37 35 31 36 34 36 32 32 36 35 20 20 31 30 31 30 34 20 00 00 00 00 00 ..13042..7516462265..10104......
50a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
50c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
50e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
51a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
51c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
51e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5200 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.//.//.+-------------------
5220 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5240 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
5260 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.........................
5280 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 ...............................|
52a0 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 .//.+---------------------------
52c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
52e0 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).
5300 31 39 39 37 2d 32 30 30 32 20 54 68 65 20 50 48 50 20 47 72 6f 75 70 20 20 20 20 20 20 20 20 20 1997-2002.The.PHP.Group.........
5320 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 .......................|.//.+---
5340 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5360 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5380 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
53a0 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
53c0 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
53e0 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
5400 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........|.//.
5420 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
5440 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....................
5460 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
5480 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...............
54a0 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
54c0 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
54e0 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...|
5500 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
5520 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
5540 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
5560 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
5580 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................|.//.+---
55a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
55c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
55e0 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
5600 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>.............
5620 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 ...............|.//.+-----------
5640 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
5660 2d 2d 2d 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
5680 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
56a0 4d 54 50 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 41 52 20 4d MTP.implementation.of.the.PEAR.M
56c0 61 69 6c 3a 3a 20 69 6e 74 65 72 66 61 63 65 2e 20 52 65 71 75 69 72 65 73 20 74 68 65 20 50 45 ail::.interface..Requires.the.PE
56e0 41 52 0a 20 2a 20 4e 65 74 5f 53 4d 54 50 3a 3a 20 63 6c 61 73 73 2e 0a 20 2a 20 40 61 63 63 65 AR..*.Net_SMTP::.class...*.@acce
5700 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
5720 65 72 73 69 6f 6e 20 24 52 65 76 69 73 69 6f 6e 3a 20 31 2e 31 20 24 20 0a 20 2a 2f 0a 63 6c 61 ersion.$Revision:.1.1.$...*/.cla
5740 73 73 20 4d 61 69 6c 5f 73 6d 74 70 20 65 78 74 65 6e 64 73 20 4d 61 69 6c 20 7b 0a 20 20 20 20 ss.Mail_smtp.extends.Mail.{.....
5760 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 53 4d 54 50 20 68 6f 73 74 20 74 6f 20 63 6f ../**......*.The.SMTP.host.to.co
5780 6e 6e 65 63 74 20 74 6f 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 09 73 74 72 69 6e 67 0a 20 20 20 nnect.to.......*.@var.string....
57a0 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 68 6f 73 74 20 3d 20 27 6c 6f 63 61 6c 68 6f 73 74 27 ..*/.....var.$host.=.'localhost'
57c0 3b 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 70 6f 72 74 20 74 68 65 20 ;......./**......*.The.port.the.
57e0 53 4d 54 50 20 73 65 72 76 65 72 20 69 73 20 6f 6e 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 09 69 SMTP.server.is.on.......*.@var.i
5800 6e 74 65 67 65 72 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 76 61 72 20 24 70 6f 72 74 20 3d 20 32 nteger......*/.....var.$port.=.2
5820 35 3b 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 57 68 65 74 68 65 72 20 6f 72 20 6e 5;......./**......*.Whether.or.n
5840 6f 74 20 74 6f 20 61 74 74 65 6d 70 74 20 74 6f 20 61 75 74 68 65 6e 74 69 63 61 74 65 20 74 6f ot.to.attempt.to.authenticate.to
5860 20 74 68 65 20 53 4d 54 50 20 73 65 72 76 65 72 2e 0a 20 20 20 20 20 2a 20 40 76 61 72 20 62 6f .the.SMTP.server.......*.@var.bo
5880 6f 6c 65 61 6e 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 olean......*/.....var.$auth.=.fa
58a0 6c 73 65 3b 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 75 73 65 72 6e 61 lse;......./**......*.The.userna
58c0 6d 65 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 me.to.use.if.the.SMTP.server.req
58e0 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 61 uires.authentication.......*.@va
5900 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 75 73 65 72 6e 61 r.string......*/.....var.$userna
5920 6d 65 20 3d 20 27 27 3b 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 54 68 65 20 70 61 me.=.'';......./**......*.The.pa
5940 73 73 77 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 ssword.to.use.if.the.SMTP.server
5960 20 72 65 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 .requires.authentication.......*
5980 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 70 61 .@var.string......*/.....var.$pa
59a0 73 73 77 6f 72 64 20 3d 20 27 27 3b 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 6f ssword.=.'';......./**......*.Co
59c0 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 61 6e nstructor.......*.......*.Instan
59e0 74 69 61 74 65 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 tiates.a.new.Mail_smtp::.object.
5a00 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 20 20 20 2a 20 70 based.on.the.parameters......*.p
5a20 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 20 66 6f 6c 6c 6f assed.in..It.looks.for.the.follo
5a40 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 20 20 68 6f 73 74 wing.parameters:......*.....host
5a60 20 20 20 20 20 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 ........The.server.to.connect.to
5a80 2e 20 44 65 66 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 ..Defaults.to.localhost.......*.
5aa0 20 20 20 20 70 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 ....port........The.port.to.conn
5ac0 65 63 74 20 74 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 ect.to..Defaults.to.25.......*..
5ae0 20 20 20 61 75 74 68 20 20 20 20 20 20 20 20 57 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 6f ...auth........Whether.or.not.to
5b00 20 75 73 65 20 53 4d 54 50 20 61 75 74 68 2e 20 44 65 66 61 75 6c 74 73 20 74 6f 20 66 61 6c 73 .use.SMTP.auth..Defaults.to.fals
5b20 65 2e 0a 20 20 20 20 20 2a 20 20 20 20 20 75 73 65 72 6e 61 6d 65 20 20 20 20 54 68 65 20 75 73 e.......*.....username....The.us
5b40 65 72 6e 61 6d 65 20 74 6f 20 75 73 65 20 66 6f 72 20 53 4d 54 50 20 61 75 74 68 2e 20 4e 6f 20 ername.to.use.for.SMTP.auth..No.
5b60 64 65 66 61 75 6c 74 2e 0a 20 20 20 20 20 2a 20 20 20 20 20 70 61 73 73 77 6f 72 64 20 20 20 20 default.......*.....password....
5b80 54 68 65 20 70 61 73 73 77 6f 72 64 20 74 6f 20 75 73 65 20 66 6f 72 20 53 4d 54 50 20 61 75 74 The.password.to.use.for.SMTP.aut
5ba0 68 2e 20 4e 6f 20 64 65 66 61 75 6c 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 49 66 20 h..No.default.......*......*.If.
5bc0 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 70 a.parameter.is.present.in.the.$p
5be0 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 20 arams.array,.it.replaces.the....
5c00 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 61 ..*.default.......*......*.@para
5c20 6d 20 61 72 72 61 79 20 48 61 73 68 20 63 6f 6e 74 61 69 6e 69 6e 67 20 61 6e 79 20 70 61 72 61 m.array.Hash.containing.any.para
5c40 6d 65 74 65 72 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 0a 20 20 20 20 20 2a meters.different.from.the......*
5c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 73 2e 0a 20 20 20 20 20 2a 20 40 ..............defaults.......*.@
5c80 61 63 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 access.public......*/......funct
5ca0 69 6f 6e 20 4d 61 69 6c 5f 73 6d 74 70 28 24 70 61 72 61 6d 73 29 0a 20 20 20 20 7b 0a 20 20 20 ion.Mail_smtp($params).....{....
5cc0 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 70 61 72 61 6d 73 5b 27 68 6f 73 74 27 5d 29 29 .....if.(isset($params['host']))
5ce0 20 24 74 68 69 73 2d 3e 68 6f 73 74 20 3d 20 24 70 61 72 61 6d 73 5b 27 68 6f 73 74 27 5d 3b 0a .$this->host.=.$params['host'];.
5d00 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 6f 72 74 27 ........if.(isset($params['port'
5d20 5d 29 29 20 24 74 68 69 73 2d 3e 70 6f 72 74 20 3d 20 24 70 61 72 61 6d 73 5b 27 70 6f 72 74 27 ])).$this->port.=.$params['port'
5d40 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 61 75 ];.........if.(isset($params['au
5d60 74 68 27 5d 29 29 20 24 74 68 69 73 2d 3e 61 75 74 68 20 3d 20 24 70 61 72 61 6d 73 5b 27 61 75 th'])).$this->auth.=.$params['au
5d80 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 73 5b th'];.........if.(isset($params[
5da0 27 75 73 65 72 6e 61 6d 65 27 5d 29 29 20 24 74 68 69 73 2d 3e 75 73 65 72 6e 61 6d 65 20 3d 20 'username'])).$this->username.=.
5dc0 24 70 61 72 61 6d 73 5b 27 75 73 65 72 6e 61 6d 65 27 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 20 $params['username'];.........if.
5de0 28 69 73 73 65 74 28 24 70 61 72 61 6d 73 5b 27 70 61 73 73 77 6f 72 64 27 5d 29 29 20 24 74 68 (isset($params['password'])).$th
5e00 69 73 2d 3e 70 61 73 73 77 6f 72 64 20 3d 20 24 70 61 72 61 6d 73 5b 27 70 61 73 73 77 6f 72 64 is->password.=.$params['password
5e20 27 5d 3b 0a 20 20 20 20 7d 0a 20 20 20 20 0a 09 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 6d 70 6c 65 '];.....}......./**......*.Imple
5e40 6d 65 6e 74 73 20 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 ments.Mail::send().function.usin
5e60 67 20 53 4d 54 50 2e 0a 20 20 20 20 20 2a 20 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6d 69 g.SMTP.......*.......*.@param.mi
5e80 78 65 64 20 24 72 65 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 xed.$recipients.Either.a.comma-s
5ea0 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 20 20 20 eperated.list.of.recipients.....
5ec0 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 69 61 6e .*..............(RFC822.complian
5ee0 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 2c 0a 20 t),.or.an.array.of.recipients,..
5f00 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 32 20 76 ....*..............each.RFC822.v
5f20 61 6c 69 64 2e 20 54 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 alid..This.may.contain.recipient
5f40 73 20 6e 6f 74 0a 20 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 s.not......*..............specif
5f60 69 65 64 20 69 6e 20 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 ied.in.the.headers,.for.Bcc:,.re
5f80 73 65 6e 64 69 6e 67 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 sending......*..............mess
5fa0 61 67 65 73 2c 20 65 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 ages,.etc.......*......*.@param.
5fc0 61 72 72 61 79 20 24 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 array.$headers.The.array.of.head
5fe0 65 72 73 20 74 6f 20 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 ers.to.send.with.the.mail,.in.an
6000 0a 20 20 20 20 20 2a 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 ......*..............associative
6020 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 65 79 20 69 73 20 74 .array,.where.the.array.key.is.t
6040 68 65 0a 20 20 20 20 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 he......*..............header.na
6060 6d 65 20 28 69 65 2c 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 me.(ie,.'Subject'),.and.the.arra
6080 79 20 76 61 6c 75 65 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 y.value......*..............is.t
60a0 68 65 20 68 65 61 64 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 he.header.value.(ie,.'test')..Th
60c0 65 20 68 65 61 64 65 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 e.header......*..............pro
60e0 64 75 63 65 64 20 66 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 duced.from.those.values.would.be
6100 20 27 53 75 62 6a 65 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 .'Subject:......*..............t
6120 65 73 74 27 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 6e est'.......*......*.@param.strin
6140 67 20 24 62 6f 64 79 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 g.$body.The.full.text.of.the.mes
6160 73 61 67 65 20 62 6f 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 sage.body,.including.any......*.
6180 20 20 20 20 20 20 20 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 ..............Mime.parts,.etc...
61a0 20 20 20 20 2a 0a 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 ....*......*.@return.mixed.Retur
61c0 6e 73 20 74 72 75 65 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 ns.true.on.success,.or.a.PEAR_Er
61e0 72 6f 72 0a 20 20 20 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 ror......*...............contain
6200 69 6e 67 20 61 20 64 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 ing.a.descriptive.error.message.
6220 6f 6e 0a 20 20 20 20 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 on......*...............failure.
6240 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 0a 20 ......*.@access.public......*/..
6260 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 6e 64 28 24 72 65 63 69 70 69 65 6e 74 73 2c 20 24 68 ...function.send($recipients,.$h
6280 65 61 64 65 72 73 2c 20 24 62 6f 64 79 29 0a 20 20 20 20 7b 0a 20 20 20 20 20 20 20 20 69 6e 63 eaders,.$body).....{.........inc
62a0 6c 75 64 65 5f 6f 6e 63 65 20 27 4e 65 74 2f 53 4d 54 50 2e 70 68 70 27 3b 0a 20 20 20 20 20 20 lude_once.'Net/SMTP.php';.......
62c0 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 28 24 73 6d 74 70 20 3d 20 6e 65 77 20 4e 65 74 ...........if.(!($smtp.=.new.Net
62e0 5f 53 4d 54 50 28 24 74 68 69 73 2d 3e 68 6f 73 74 2c 20 24 74 68 69 73 2d 3e 70 6f 72 74 29 29 _SMTP($this->host,.$this->port))
6300 29 20 7b 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 ).{.return.new.PEAR_Error('unabl
6320 65 20 74 6f 20 69 6e 73 74 61 6e 74 69 61 74 65 20 4e 65 74 5f 53 4d 54 50 20 6f 62 6a 65 63 74 e.to.instantiate.Net_SMTP.object
6340 27 29 3b 20 7d 0a 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 ');.}.........if.(PEAR::isError(
6360 24 73 6d 74 70 2d 3e 63 6f 6e 6e 65 63 74 28 29 29 29 20 7b 20 72 65 74 75 72 6e 20 6e 65 77 20 $smtp->connect())).{.return.new.
6380 50 45 41 52 5f 45 72 72 6f 72 28 27 75 6e 61 62 6c 65 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f PEAR_Error('unable.to.connect.to
63a0 20 73 6d 74 70 20 73 65 72 76 65 72 20 27 20 2e 20 24 74 68 69 73 2d 3e 68 6f 73 74 20 2e 20 27 .smtp.server.'...$this->host...'
63c0 3a 27 20 2e 20 24 74 68 69 73 2d 3e 70 6f 72 74 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 :'...$this->port);.}............
63e0 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).{........
6400 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 61 75 .....if.(PEAR::isError($smtp->au
6420 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 73 77 th($this->username,.$this->passw
6440 6f 72 64 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 72 28 27 ord))).{.return.new.PEAR_Error('
6460 75 6e 61 62 6c 65 20 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 unable.to.authenticate.to.smtp.s
6480 65 72 76 65 72 27 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 50 45 41 52 3a erver');.}.............if.(PEAR:
64a0 3a 69 73 45 72 72 6f 72 28 24 73 6d 74 70 2d 3e 69 64 65 6e 74 69 66 79 53 65 6e 64 65 72 28 29 :isError($smtp->identifySender()
64c0 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 72 28 27 75 6e 61 62 )).{.return.new.PEAR_Error('unab
64e0 6c 65 20 74 6f 20 69 64 65 6e 74 69 66 79 20 73 6d 74 70 20 73 65 72 76 65 72 27 29 3b 20 7d 0a le.to.identify.smtp.server');.}.
6500 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 6c 69 73 74 28 ........}..................list(
6520 24 66 72 6f 6d 2c 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 $from,.$text_headers).=.$this->p
6540 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 20 20 20 20 20 20 20 repareHeaders($headers);........
6560 20 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 .if.(!isset($from)).{...........
6580 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 4e 6f 20 66 72 6f 6d ..return.new.PEAR_Error('No.from
65a0 20 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 20 20 20 20 .address.given');.........}.....
65c0 20 20 20 20 0a 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 .............if.(PEAR::isError($
65e0 73 6d 74 70 2d 3e 6d 61 69 6c 46 72 6f 6d 28 24 66 72 6f 6d 29 29 29 20 7b 20 72 65 74 75 72 6e smtp->mailFrom($from))).{.return
6600 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 73 65 74 20 73 .new.PEAR_Error('unable.to.set.s
6620 65 6e 64 65 72 20 74 6f 20 5b 27 20 2e 20 24 66 72 6f 6d 20 2e 20 27 5d 27 29 3b 20 7d 0a 20 20 ender.to.['...$from...']');.}...
6640 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 24 72 65 63 69 70 69 65 6e 74 73 20 3d 20 24 74 68 ...............$recipients.=.$th
6660 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)
6680 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 28 24 72 65 63 69 70 69 65 6e 74 73 20 61 73 ;.........foreach($recipients.as
66a0 20 24 72 65 63 69 70 69 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 50 .$recipient).{.............if.(P
66c0 45 41 52 3a 3a 69 73 45 72 72 6f 72 28 24 72 65 73 20 3d 20 24 73 6d 74 70 2d 3e 72 63 70 74 54 EAR::isError($res.=.$smtp->rcptT
66e0 6f 28 24 72 65 63 69 70 69 65 6e 74 29 29 29 20 7b 20 72 65 74 75 72 6e 20 6e 65 77 20 50 45 41 o($recipient))).{.return.new.PEA
6700 52 5f 45 72 72 6f 72 28 27 75 6e 61 62 6c 65 20 74 6f 20 61 64 64 20 72 65 63 69 70 69 65 6e 74 R_Error('unable.to.add.recipient
6720 20 5b 27 20 2e 20 24 72 65 63 69 70 69 65 6e 74 20 2e 20 27 5d 3a 20 27 20 2e 20 24 72 65 73 2d .['...$recipient...']:.'...$res-
6740 3e 67 65 74 4d 65 73 73 61 67 65 28 29 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 09 09 0a 20 >getMessage());.}.........}.....
6760 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->
6780 64 61 74 61 28 24 74 65 78 74 5f 68 65 61 64 65 72 73 20 2e 20 22 5c 6e 22 20 2e 20 24 62 6f 64 data($text_headers..."\n"...$bod
67a0 79 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 72 28 27 75 6e y))).{.return.new.PEAR_Error('un
67c0 61 62 6c 65 20 74 6f 20 73 65 6e 64 20 64 61 74 61 27 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 0a able.to.send.data');.}..........
67e0 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 28 29 3b 0a 20 20 20 ........$smtp->disconnect();....
6800 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 0a 3f .....return.true;.....}......}.?
6820 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 00 00 >...............................
6840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a00 4d 61 69 6c 2d 31 2e 30 2e 31 2f 4d 61 69 6c 2f 52 46 43 38 32 32 2e 70 68 70 00 00 00 00 00 00 Mail-1.0.1/Mail/RFC822.php......
6a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a60 00 00 00 00 31 30 30 36 36 34 20 00 20 20 20 20 20 30 20 00 20 20 20 37 36 37 20 00 20 20 20 20 ....100664.......0.....767......
6a80 20 20 37 35 32 34 30 20 20 37 35 32 30 32 37 30 30 33 34 20 20 20 37 37 36 31 20 00 00 00 00 00 ..75240..7520270034...7761......
6aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c00 3c 3f 70 68 70 0d 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 <?php..//.+---------------------
6c20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
6c40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0d 0a 2f 2f 20 7c 20 43 6f 70 79 72 69 ------------------+..//.|.Copyri
6c60 67 68 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 ght.(c).2001-2002,.Richard.Heyes
6c80 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 ................................
6ca0 7c 0d 0a 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 |..//.|.All.rights.reserved.....
6cc0 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 ................................
6ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 20 20 20 20 20 20 20 20 20 20 ..............|..//.|...........
6d00 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 ................................
6d20 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 0d 0a 2f ............................|../
6d40 2f 20 7c 20 52 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 /.|.Redistribution.and.use.in.so
6d60 75 72 63 65 20 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 urce.and.binary.forms,.with.or.w
6d80 69 74 68 6f 75 74 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 2c 20 ithout....|..//.|.modification,.
6da0 61 72 65 20 70 65 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 are.permitted.provided.that.the.
6dc0 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 64 69 74 69 6f 6e 73 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 following.conditions....|..//.|.
6de0 61 72 65 20 6d 65 74 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 are.met:........................
6e00 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 ................................
6e20 20 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......|..//.|...................
6e40 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 ................................
6e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 6f 20 52 65 ....................|..//.|.o.Re
6e80 64 69 73 74 72 69 62 75 74 69 6f 6e 73 20 6f 66 20 73 6f 75 72 63 65 20 63 6f 64 65 20 6d 75 73 distributions.of.source.code.mus
6ea0 74 20 72 65 74 61 69 6e 20 74 68 65 20 61 62 6f 76 65 20 63 6f 70 79 72 69 67 68 74 20 20 20 20 t.retain.the.above.copyright....
6ec0 20 20 7c 0d 0a 2f 2f 20 7c 20 20 20 6e 6f 74 69 63 65 2c 20 74 68 69 73 20 6c 69 73 74 20 6f 66 ..|..//.|...notice,.this.list.of
6ee0 20 63 6f 6e 64 69 74 69 6f 6e 73 20 61 6e 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 69 .conditions.and.the.following.di
6f00 73 63 6c 61 69 6d 65 72 2e 20 20 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 6f 20 52 65 64 69 73 74 sclaimer........|..//.|.o.Redist
6f20 72 69 62 75 74 69 6f 6e 73 20 69 6e 20 62 69 6e 61 72 79 20 66 6f 72 6d 20 6d 75 73 74 20 72 65 ributions.in.binary.form.must.re
6f40 70 72 6f 64 75 63 65 20 74 68 65 20 61 62 6f 76 65 20 63 6f 70 79 72 69 67 68 74 20 20 20 7c 0d produce.the.above.copyright...|.
6f60 0a 2f 2f 20 7c 20 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 .//.|...notice,.this.list.of.con
6f80 64 69 74 69 6f 6e 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 ditions.and.the.following.discla
6fa0 69 6d 65 72 20 69 6e 20 74 68 65 20 7c 0d 0a 2f 2f 20 7c 20 20 20 64 6f 63 75 6d 65 6e 74 61 74 imer.in.the.|..//.|...documentat
6fc0 69 6f 6e 20 61 6e 64 2f 6f 72 20 6f 74 68 65 72 20 6d 61 74 65 72 69 61 6c 73 20 70 72 6f 76 69 ion.and/or.other.materials.provi
6fe0 64 65 64 20 77 69 74 68 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 7c 20 0d 0a 2f 2f ded.with.the.distribution.|...//
7000 20 7c 20 6f 20 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 61 75 74 68 6f 72 73 20 6d 61 .|.o.The.names.of.the.authors.ma
7020 79 20 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 65 6e 64 6f 72 73 65 20 6f 72 20 70 72 6f 6d y.not.be.used.to.endorse.or.prom
7040 6f 74 65 20 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 20 20 70 72 6f 64 75 63 74 73 20 64 65 72 69 ote......|..//.|...products.deri
7060 76 65 64 20 66 72 6f 6d 20 74 68 69 73 20 73 6f 66 74 77 61 72 65 20 77 69 74 68 6f 75 74 20 73 ved.from.this.software.without.s
7080 70 65 63 69 66 69 63 20 70 72 69 6f 72 20 77 72 69 74 74 65 6e 20 20 7c 0d 0a 2f 2f 20 7c 20 20 pecific.prior.written..|..//.|..
70a0 20 70 65 72 6d 69 73 73 69 6f 6e 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .permission.....................
70c0 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 ................................
70e0 20 20 20 20 20 7c 0d 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 .....|..//.|....................
7100 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 ................................
7120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 54 48 49 53 20 ...................|..//.|.THIS.
7140 53 4f 46 54 57 41 52 45 20 49 53 20 50 52 4f 56 49 44 45 44 20 42 59 20 54 48 45 20 43 4f 50 59 SOFTWARE.IS.PROVIDED.BY.THE.COPY
7160 52 49 47 48 54 20 48 4f 4c 44 45 52 53 20 41 4e 44 20 43 4f 4e 54 52 49 42 55 54 4f 52 53 20 20 RIGHT.HOLDERS.AND.CONTRIBUTORS..
7180 20 7c 0d 0a 2f 2f 20 7c 20 22 41 53 20 49 53 22 20 41 4e 44 20 41 4e 59 20 45 58 50 52 45 53 53 .|..//.|."AS.IS".AND.ANY.EXPRESS
71a0 20 4f 52 20 49 4d 50 4c 49 45 44 20 57 41 52 52 41 4e 54 49 45 53 2c 20 49 4e 43 4c 55 44 49 4e .OR.IMPLIED.WARRANTIES,.INCLUDIN
71c0 47 2c 20 42 55 54 20 4e 4f 54 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 4c 49 4d 49 54 45 44 20 54 G,.BUT.NOT.....|..//.|.LIMITED.T
71e0 4f 2c 20 54 48 45 20 49 4d 50 4c 49 45 44 20 57 41 52 52 41 4e 54 49 45 53 20 4f 46 20 4d 45 52 O,.THE.IMPLIED.WARRANTIES.OF.MER
7200 43 48 41 4e 54 41 42 49 4c 49 54 59 20 41 4e 44 20 46 49 54 4e 45 53 53 20 46 4f 52 20 7c 0d 0a CHANTABILITY.AND.FITNESS.FOR.|..
7220 2f 2f 20 7c 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 20 41 52 45 20 44 49 //.|.A.PARTICULAR.PURPOSE.ARE.DI
7240 53 43 4c 41 49 4d 45 44 2e 20 49 4e 20 4e 4f 20 45 56 45 4e 54 20 53 48 41 4c 4c 20 54 48 45 20 SCLAIMED..IN.NO.EVENT.SHALL.THE.
7260 43 4f 50 59 52 49 47 48 54 20 20 7c 0d 0a 2f 2f 20 7c 20 4f 57 4e 45 52 20 4f 52 20 43 4f 4e 54 COPYRIGHT..|..//.|.OWNER.OR.CONT
7280 52 49 42 55 54 4f 52 53 20 42 45 20 4c 49 41 42 4c 45 20 46 4f 52 20 41 4e 59 20 44 49 52 45 43 RIBUTORS.BE.LIABLE.FOR.ANY.DIREC
72a0 54 2c 20 49 4e 44 49 52 45 43 54 2c 20 49 4e 43 49 44 45 4e 54 41 4c 2c 20 7c 0d 0a 2f 2f 20 7c T,.INDIRECT,.INCIDENTAL,.|..//.|
72c0 20 53 50 45 43 49 41 4c 2c 20 45 58 45 4d 50 4c 41 52 59 2c 20 4f 52 20 43 4f 4e 53 45 51 55 45 .SPECIAL,.EXEMPLARY,.OR.CONSEQUE
72e0 4e 54 49 41 4c 20 44 41 4d 41 47 45 53 20 28 49 4e 43 4c 55 44 49 4e 47 2c 20 42 55 54 20 4e 4f NTIAL.DAMAGES.(INCLUDING,.BUT.NO
7300 54 20 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 4c 49 4d 49 54 45 44 20 54 4f 2c 20 50 52 4f 43 55 T......|..//.|.LIMITED.TO,.PROCU
7320 52 45 4d 45 4e 54 20 4f 46 20 53 55 42 53 54 49 54 55 54 45 20 47 4f 4f 44 53 20 4f 52 20 53 45 REMENT.OF.SUBSTITUTE.GOODS.OR.SE
7340 52 56 49 43 45 53 3b 20 4c 4f 53 53 20 4f 46 20 55 53 45 2c 20 7c 0d 0a 2f 2f 20 7c 20 44 41 54 RVICES;.LOSS.OF.USE,.|..//.|.DAT
7360 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 53 20 49 4e 54 45 52 A,.OR.PROFITS;.OR.BUSINESS.INTER
7380 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 4e 44 20 4f 4e 20 41 RUPTION).HOWEVER.CAUSED.AND.ON.A
73a0 4e 59 20 7c 0d 0a 2f 2f 20 7c 20 54 48 45 4f 52 59 20 4f 46 20 4c 49 41 42 49 4c 49 54 59 2c 20 NY.|..//.|.THEORY.OF.LIABILITY,.
73c0 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 54 20 4c 49 41 42 WHETHER.IN.CONTRACT,.STRICT.LIAB
73e0 49 4c 49 54 59 2c 20 4f 52 20 54 4f 52 54 20 20 20 7c 0d 0a 2f 2f 20 7c 20 28 49 4e 43 4c 55 44 ILITY,.OR.TORT...|..//.|.(INCLUD
7400 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 29 20 41 52 49 ING.NEGLIGENCE.OR.OTHERWISE).ARI
7420 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 55 53 45 20 7c SING.IN.ANY.WAY.OUT.OF.THE.USE.|
7440 0d 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 4e 20 49 46 ..//.|.OF.THIS.SOFTWARE,.EVEN.IF
7460 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 4f 46 20 53 .ADVISED.OF.THE.POSSIBILITY.OF.S
7480 55 43 48 20 44 41 4d 41 47 45 2e 20 20 7c 0d 0a 2f 2f 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 UCH.DAMAGE...|..//.|............
74a0 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 ................................
74c0 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 0d 0a 2f 2f ...........................|..//
74e0 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 2d 2d .+------------------------------
7500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
7520 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0d 0a 2f 2f 20 7c 20 41 75 74 68 6f 72 73 3a 20 52 69 63 68 61 72 ---------+..//.|.Authors:.Richar
7540 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 20 d.Heyes.<richard@phpguru.org>...
7560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0d 0a 2f 2f 20 7c 20 20 .......................|..//.|..
7580 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
75a0 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>.......................
75c0 20 20 20 20 20 7c 0d 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 .....|..//.+--------------------
75e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
7600 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 0d 0a 0d 0a 72 65 71 75 69 72 65 5f -------------------+....require_
7620 6f 6e 63 65 20 28 27 50 45 41 52 2e 70 68 70 27 29 3b 0d 0a 0d 0a 2f 2a 2a 0d 0a 2a 20 52 46 43 once.('PEAR.php');..../**..*.RFC
7640 20 38 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 .822.Email.address.list.validati
7660 6f 6e 20 55 74 69 6c 69 74 79 0d 0a 2a 0d 0a 2a 20 57 68 61 74 20 69 73 20 69 74 3f 0d 0a 2a 0d on.Utility..*..*.What.is.it?..*.
7680 0a 2a 20 54 68 69 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 .*.This.class.will.take.an.addre
76a0 73 73 20 73 74 72 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 ss.string,.and.parse.it.into.it'
76c0 73 20 63 6f 6e 73 69 74 75 65 6e 74 0d 0a 2a 20 70 61 72 74 73 2c 20 62 65 20 74 68 61 74 20 65 s.consituent..*.parts,.be.that.e
76e0 69 74 68 65 72 20 61 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 ither.addresses,.groups,.or.comb
7700 69 6e 61 74 69 6f 6e 73 2e 20 4e 65 73 74 65 64 20 67 72 6f 75 70 73 0d 0a 2a 20 61 72 65 20 6e inations..Nested.groups..*.are.n
7720 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 20 54 68 65 20 73 74 72 75 63 74 75 72 65 20 69 74 20 72 ot.supported..The.structure.it.r
7740 65 74 75 72 6e 73 20 69 73 20 70 72 65 74 74 79 20 73 74 72 61 69 67 68 74 20 66 6f 72 77 61 72 eturns.is.pretty.straight.forwar
7760 64 2c 0d 0a 2a 20 61 6e 64 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 61 74 20 70 72 6f d,..*.and.is.similar.to.that.pro
7780 76 69 64 65 64 20 62 79 20 74 68 65 20 69 6d 61 70 5f 72 66 63 38 32 32 5f 70 61 72 73 65 5f 61 vided.by.the.imap_rfc822_parse_a
77a0 64 72 6c 69 73 74 28 29 2e 20 55 73 65 0d 0a 2a 20 70 72 69 6e 74 5f 72 28 29 20 74 6f 20 76 69 drlist()..Use..*.print_r().to.vi
77c0 65 77 20 74 68 65 20 73 74 72 75 63 74 75 72 65 2e 0d 0a 2a 0d 0a 2a 20 48 6f 77 20 64 6f 20 49 ew.the.structure...*..*.How.do.I
77e0 20 75 73 65 20 69 74 3f 0d 0a 2a 0d 0a 2a 20 24 61 64 64 72 65 73 73 5f 73 74 72 69 6e 67 20 3d .use.it?..*..*.$address_string.=
7800 20 27 4d 79 20 47 72 6f 75 70 3a 20 22 52 69 63 68 61 72 64 22 20 3c 72 69 63 68 61 72 64 40 6c .'My.Group:."Richard".<richard@l
7820 6f 63 61 6c 68 6f 73 74 3e 20 28 41 20 63 6f 6d 6d 65 6e 74 29 2c 20 74 65 64 40 65 78 61 6d 70 ocalhost>.(A.comment),.ted@examp
7840 6c 65 2e 63 6f 6d 20 28 54 65 64 20 42 6c 6f 67 67 73 29 2c 20 42 61 72 6e 65 79 3b 27 3b 0d 0a le.com.(Ted.Bloggs),.Barney;';..
7860 2a 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 4d 61 69 6c 5f 52 46 43 38 32 32 3a 3a 70 61 72 73 *.$structure.=.Mail_RFC822::pars
7880 65 41 64 64 72 65 73 73 4c 69 73 74 28 24 61 64 64 72 65 73 73 5f 73 74 72 69 6e 67 2c 20 27 65 eAddressList($address_string,.'e
78a0 78 61 6d 70 6c 65 2e 63 6f 6d 27 2c 20 74 72 75 65 29 0d 0a 2a 20 70 72 69 6e 74 5f 72 28 24 73 xample.com',.true)..*.print_r($s
78c0 74 72 75 63 74 75 72 65 29 3b 0d 0a 2a 0d 0a 2a 20 40 61 75 74 68 6f 72 20 20 52 69 63 68 61 72 tructure);..*..*.@author..Richar
78e0 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 0d 0a 2a d.Heyes.<richard@phpguru.org>..*
7900 20 40 61 75 74 68 6f 72 20 20 43 68 75 63 6b 20 48 61 67 65 6e 62 75 63 68 20 3c 63 68 75 63 6b .@author..Chuck.Hagenbuch.<chuck
7920 40 68 6f 72 64 65 2e 6f 72 67 3e 0d 0a 2a 20 40 76 65 72 73 69 6f 6e 20 24 52 65 76 69 73 69 6f @horde.org>..*.@version.$Revisio
7940 6e 3a 20 31 2e 32 20 24 0d 0a 2a 20 40 6c 69 63 65 6e 73 65 20 42 53 44 0d 0a 2a 20 40 70 61 63 n:.1.2.$..*.@license.BSD..*.@pac
7960 6b 61 67 65 20 4d 61 69 6c 0d 0a 2a 2f 0d 0a 0d 0a 63 6c 61 73 73 20 4d 61 69 6c 5f 52 46 43 38 kage.Mail..*/....class.Mail_RFC8
7980 32 32 20 65 78 74 65 6e 64 73 20 50 45 41 52 7b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 22.extends.PEAR{......../**.....
79a0 20 20 2a 20 54 68 65 20 61 64 64 72 65 73 73 20 62 65 69 6e 67 20 70 61 72 73 65 64 20 62 79 20 ..*.The.address.being.parsed.by.
79c0 74 68 65 20 52 46 43 38 32 32 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 2a 20 40 76 61 72 20 the.RFC822.object........*.@var.
79e0 73 74 72 69 6e 67 20 24 61 64 64 72 65 73 73 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 76 61 string.$address.......*/......va
7a00 72 20 24 61 64 64 72 65 73 73 20 3d 20 27 27 3b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 r.$address.=.'';......../**.....
7a20 20 20 2a 20 54 68 65 20 64 65 66 61 75 6c 74 20 64 6f 6d 61 69 6e 20 74 6f 20 75 73 65 20 66 6f ..*.The.default.domain.to.use.fo
7a40 72 20 75 6e 71 75 61 6c 69 66 69 65 64 20 61 64 64 72 65 73 73 65 73 2e 0d 0a 20 20 20 20 20 2a r.unqualified.addresses........*
7a60 20 40 76 61 72 20 73 74 72 69 6e 67 20 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 0d 0a 20 20 .@var.string.$default_domain....
7a80 20 20 20 2a 2f 0d 0a 20 20 20 20 76 61 72 20 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 20 3d ...*/......var.$default_domain.=
7aa0 20 27 6c 6f 63 61 6c 68 6f 73 74 27 3b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a .'localhost';......../**.......*
7ac0 20 53 68 6f 75 6c 64 20 77 65 20 72 65 74 75 72 6e 20 61 20 6e 65 73 74 65 64 20 61 72 72 61 79 .Should.we.return.a.nested.array
7ae0 20 73 68 6f 77 69 6e 67 20 67 72 6f 75 70 73 2c 20 6f 72 20 66 6c 61 74 74 65 6e 20 65 76 65 72 .showing.groups,.or.flatten.ever
7b00 79 74 68 69 6e 67 3f 0d 0a 20 20 20 20 20 2a 20 40 76 61 72 20 62 6f 6f 6c 65 61 6e 20 24 6e 65 ything?.......*.@var.boolean.$ne
7b20 73 74 47 72 6f 75 70 73 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 76 61 72 20 24 6e 65 73 74 stGroups.......*/......var.$nest
7b40 47 72 6f 75 70 73 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 Groups.=.true;......../**.......
7b60 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 74 65 20 61 74 6f *.Whether.or.not.to.validate.ato
7b80 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 73 2e 0d 0a 20 20 ms.for.non-ascii.characters.....
7ba0 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 0d 0a 20 20 20 ...*.@var.boolean.$validate.....
7bc0 20 20 2a 2f 0d 0a 20 20 20 20 76 61 72 20 24 76 61 6c 69 64 61 74 65 20 3d 20 74 72 75 65 3b 0d ..*/......var.$validate.=.true;.
7be0 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 54 68 65 20 61 72 72 61 79 20 6f 66 20 ......./**.......*.The.array.of.
7c00 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
7c20 73 65 2e 0d 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 se........*.@var.array.$addresse
7c40 73 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 76 61 72 20 24 61 64 64 72 65 73 73 65 73 20 3d s.......*/......var.$addresses.=
7c60 20 61 72 72 61 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 54 68 65 .array();......../**.......*.The
7c80 20 66 69 6e 61 6c 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 .final.array.of.parsed.address.i
7ca0 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 77 65 20 62 75 69 6c 64 20 75 70 2e 0d 0a 20 20 nformation.that.we.build.up.....
7cc0 20 20 20 2a 20 40 76 61 72 20 61 72 72 61 79 20 24 73 74 72 75 63 74 75 72 65 0d 0a 20 20 20 20 ...*.@var.array.$structure......
7ce0 20 2a 2f 0d 0a 20 20 20 20 76 61 72 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 61 72 72 61 79 28 .*/......var.$structure.=.array(
7d00 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 54 68 65 20 63 75 72 72 65 6e );......../**.......*.The.curren
7d20 74 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20 20 20 2a t.error.message,.if.any........*
7d40 20 40 76 61 72 20 73 74 72 69 6e 67 20 24 65 72 72 6f 72 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 .@var.string.$error.......*/....
7d60 20 20 76 61 72 20 24 65 72 72 6f 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d ..var.$error.=.null;......../**.
7d80 0a 20 20 20 20 20 2a 20 41 6e 20 69 6e 74 65 72 6e 61 6c 20 63 6f 75 6e 74 65 72 2f 70 6f 69 6e ......*.An.internal.counter/poin
7da0 74 65 72 2e 0d 0a 20 20 20 20 20 2a 20 40 76 61 72 20 69 6e 74 65 67 65 72 20 24 69 6e 64 65 78 ter........*.@var.integer.$index
7dc0 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 76 61 72 20 24 69 6e 64 65 78 20 3d 20 6e 75 6c 6c .......*/......var.$index.=.null
7de0 3b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 54 68 65 20 6e 75 6d 62 65 72 20 ;......../**.......*.The.number.
7e00 6f 66 20 67 72 6f 75 70 73 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6e 20 66 6f 75 6e 64 20 69 of.groups.that.have.been.found.i
7e20 6e 20 74 68 65 20 61 64 64 72 65 73 73 20 6c 69 73 74 2e 0d 0a 20 20 20 20 20 2a 20 40 76 61 72 n.the.address.list........*.@var
7e40 20 69 6e 74 65 67 65 72 20 24 6e 75 6d 5f 67 72 6f 75 70 73 0d 0a 20 20 20 20 20 2a 20 40 61 63 .integer.$num_groups.......*.@ac
7e60 63 65 73 73 20 70 75 62 6c 69 63 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 76 61 72 20 24 6e cess.public.......*/......var.$n
7e80 75 6d 5f 67 72 6f 75 70 73 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 um_groups.=.0;......../**.......
7ea0 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 6c *.A.variable.so.that.we.can.tell
7ec0 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 0d 0a .whether.or.not.we're.inside.a..
7ee0 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 0d 0a 20 20 20 20 .....*.Mail_RFC822.object.......
7f00 20 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 0d 0a 20 20 20 .*.@var.boolean.$mailRFC822.....
7f20 20 20 2a 2f 0d 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 ..*/......var.$mailRFC822.=.true
7f40 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 2a 20 41 20 6c 69 6d 69 74 20 ;............/**......*.A.limit.
7f60 61 66 74 65 72 20 77 68 69 63 68 20 70 72 6f 63 65 73 73 69 6e 67 20 73 74 6f 70 73 0d 0a 20 20 after.which.processing.stops....
7f80 20 20 2a 20 40 76 61 72 20 69 6e 74 20 24 6c 69 6d 69 74 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 ..*.@var.int.$limit......*/.....
7fa0 20 76 61 72 20 24 6c 69 6d 69 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 0d 0a 20 20 20 20 2f 2a 2a .var.$limit.=.null;........../**
7fc0 0d 0a 20 20 20 20 20 2a 20 53 65 74 73 20 75 70 20 74 68 65 20 6f 62 6a 65 63 74 2e 20 54 68 65 .......*.Sets.up.the.object..The
7fe0 20 61 64 64 72 65 73 73 20 6d 75 73 74 20 65 69 74 68 65 72 20 62 65 20 73 65 74 20 68 65 72 65 .address.must.either.be.set.here
8000 20 6f 72 20 77 68 65 6e 0d 0a 20 20 20 20 20 2a 20 63 61 6c 6c 69 6e 67 20 70 61 72 73 65 41 64 .or.when.......*.calling.parseAd
8020 64 72 65 73 73 4c 69 73 74 28 29 2e 20 4f 6e 65 20 6f 72 20 74 68 65 20 6f 74 68 65 72 2e 0d 0a dressList()..One.or.the.other...
8040 20 20 20 20 20 2a 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0d 0a 20 .....*.......*.@access.public...
8060 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 20 24 61 64 64 72 65 73 73 20 20 20 ....*.@param.string..$address...
8080 20 20 20 20 20 20 54 68 65 20 61 64 64 72 65 73 73 28 65 73 29 20 74 6f 20 76 61 6c 69 64 61 74 ......The.address(es).to.validat
80a0 65 2e 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 20 24 64 65 66 61 75 e........*.@param.string..$defau
80c0 6c 74 5f 64 6f 6d 61 69 6e 20 20 44 65 66 61 75 6c 74 20 64 6f 6d 61 69 6e 2f 68 6f 73 74 20 65 lt_domain..Default.domain/host.e
80e0 74 63 2e 20 49 66 20 6e 6f 74 20 73 75 70 70 6c 69 65 64 2c 20 77 69 6c 6c 20 62 65 20 73 65 74 tc..If.not.supplied,.will.be.set
8100 20 74 6f 20 6c 6f 63 61 6c 68 6f 73 74 2e 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 62 6f .to.localhost........*.@param.bo
8120 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
8140 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
8160 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 0d 0a 20 ps.nested.for.easier.viewing....
8180 20 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 ....*.@param.boolean.$validate..
81a0 20 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 ......Whether.to.validate.atoms.
81c0 20 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 .Turn.this.off.if.you.need.to.ru
81e0 6e 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 n.addresses.through.before.encod
8200 69 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 ing.the.personal.names,.for.inst
8220 61 6e 63 65 2e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6f ance........*........*.@return.o
8240 62 6a 65 63 74 20 4d 61 69 6c 5f 52 46 43 38 32 32 20 41 20 6e 65 77 20 4d 61 69 6c 5f 52 46 43 bject.Mail_RFC822.A.new.Mail_RFC
8260 38 32 32 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 822.object........*/......functi
8280 6f 6e 20 4d 61 69 6c 5f 52 46 43 38 32 32 28 24 61 64 64 72 65 73 73 20 3d 20 6e 75 6c 6c 2c 20 on.Mail_RFC822($address.=.null,.
82a0 24 64 65 66 61 75 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 $default_domain.=.null,.$nest_gr
82c0 6f 75 70 73 20 3d 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 oups.=.null,.$validate.=.null,.$
82e0 6c 69 6d 69 74 20 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 limit.=.null)......{..........if
8300 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 24 74 68 69 73 2d .(isset($address))........$this-
8320 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 3b 0d 0a 20 20 20 >address........=.$address;.....
8340 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 61 69 6e 29 29 .....if.(isset($default_domain))
8360 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 65 66 61 75 6c .$this->default_domain.=.$defaul
8380 74 5f 64 6f 6d 61 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 6e 65 t_domain;..........if.(isset($ne
83a0 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 6f 75 70 73 st_groups))....$this->nestGroups
83c0 20 20 20 20 20 3d 20 24 6e 65 73 74 5f 67 72 6f 75 70 73 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 .....=.$nest_groups;..........if
83e0 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 69 73 2d .(isset($validate)).......$this-
8400 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 0d 0a 20 20 >validate.......=.$validate;....
8420 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 20 20 ......if.(isset($limit))........
8440 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 69 74 ..$this->limit..........=.$limit
8460 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 53 74 ;......}........../**.......*.St
8480 61 72 74 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 arts.the.whole.process..The.addr
84a0 65 73 73 20 6d 75 73 74 20 65 69 74 68 65 72 20 62 65 20 73 65 74 20 68 65 72 65 0d 0a 20 20 20 ess.must.either.be.set.here.....
84c0 20 20 2a 20 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 ..*.or.when.creating.the.object.
84e0 20 4f 6e 65 20 6f 72 20 74 68 65 20 6f 74 68 65 72 2e 0d 0a 20 20 20 20 20 2a 0d 0a 20 20 20 20 .One.or.the.other........*......
8500 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d .*.@access.public.......*.@param
8520 20 73 74 72 69 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 .string..$address.........The.ad
8540 64 72 65 73 73 28 65 73 29 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0d 0a 20 20 20 20 20 2a 20 40 dress(es).to.validate........*.@
8560 70 61 72 61 6d 20 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 param.string..$default_domain..D
8580 65 66 61 75 6c 74 20 64 6f 6d 61 69 6e 2f 68 6f 73 74 20 65 74 63 2e 0d 0a 20 20 20 20 20 2a 20 efault.domain/host.etc........*.
85a0 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 20 20 20 20 @param.boolean.$nest_groups.....
85c0 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 75 72 65 20 Whether.to.return.the.structure.
85e0 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 72 20 76 69 with.groups.nested.for.easier.vi
8600 65 77 69 6e 67 2e 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 62 6f 6f 6c 65 61 6e 20 24 76 ewing........*.@param.boolean.$v
8620 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 69 64 61 alidate........Whether.to.valida
8640 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 75 20 6e te.atoms..Turn.this.off.if.you.n
8660 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 62 65 66 eed.to.run.addresses.through.bef
8680 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 65 73 2c ore.encoding.the.personal.names,
86a0 20 66 6f 72 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 .for.instance........*........*.
86c0 40 72 65 74 75 72 6e 20 61 72 72 61 79 20 41 20 73 74 72 75 63 74 75 72 65 64 20 61 72 72 61 79 @return.array.A.structured.array
86e0 20 6f 66 20 61 64 64 72 65 73 73 65 73 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e .of.addresses........*/......fun
8700 63 74 69 6f 6e 20 70 61 72 73 65 41 64 64 72 65 73 73 4c 69 73 74 28 24 61 64 64 72 65 73 73 20 ction.parseAddressList($address.
8720 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,.
8740 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.=
8760 20 6e 75 6c 6c 2c 20 24 6c 69 6d 69 74 20 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 7b 0d 0a 0d 0a .null,.$limit.=.null)......{....
8780 20 20 20 20 20 20 20 20 69 66 20 28 21 69 73 73 65 74 28 24 74 68 69 73 2d 3e 6d 61 69 6c 52 46 ........if.(!isset($this->mailRF
87a0 43 38 32 32 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6f 62 6a 20 3d 20 6e 65 77 C822)).{..............$obj.=.new
87c0 20 4d 61 69 6c 5f 52 46 43 38 32 32 28 24 61 64 64 72 65 73 73 2c 20 24 64 65 66 61 75 6c 74 5f .Mail_RFC822($address,.$default_
87e0 64 6f 6d 61 69 6e 2c 20 24 6e 65 73 74 5f 67 72 6f 75 70 73 2c 20 24 76 61 6c 69 64 61 74 65 2c domain,.$nest_groups,.$validate,
8800 20 24 6c 69 6d 69 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 6f .$limit);..............return.$o
8820 62 6a 2d 3e 70 61 72 73 65 41 64 64 72 65 73 73 4c 69 73 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 bj->parseAddressList();.........
8840 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 61 64 64 72 65 73 73 .}............if.(isset($address
8860 29 29 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 20 20 20 20 20 20 20 20 ))........$this->address........
8880 3d 20 24 61 64 64 72 65 73 73 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 =.$address;..........if.(isset($
88a0 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 29 29 20 24 74 68 69 73 2d 3e 64 65 66 61 75 6c 74 5f default_domain)).$this->default_
88c0 64 6f 6d 61 69 6e 20 3d 20 24 64 65 66 61 75 6c 74 5f 64 6f 6d 61 69 6e 3b 0d 0a 20 20 20 20 20 domain.=.$default_domain;.......
88e0 20 20 20 69 66 20 28 69 73 73 65 74 28 24 6e 65 73 74 5f 67 72 6f 75 70 73 29 29 20 20 20 20 24 ...if.(isset($nest_groups))....$
8900 74 68 69 73 2d 3e 6e 65 73 74 47 72 6f 75 70 73 20 20 20 20 20 3d 20 24 6e 65 73 74 5f 67 72 6f this->nestGroups.....=.$nest_gro
8920 75 70 73 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 76 61 6c 69 64 61 74 ups;..........if.(isset($validat
8940 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 20 20 20 20 20 20 20 e)).......$this->validate.......
8960 3d 20 24 76 61 6c 69 64 61 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 =.$validate;..........if.(isset(
8980 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 69 6d 69 74 20 20 $limit))..........$this->limit..
89a0 20 20 20 20 20 20 20 20 3d 20 24 6c 69 6d 69 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 24 74 68 ........=.$limit;............$th
89c0 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 0d 0a 20 20 20 20 20 is->structure..=.array();.......
89e0 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 29 3b 0d ...$this->addresses..=.array();.
8a00 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 75 6c .........$this->error......=.nul
8a20 6c 3b 0d 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 20 l;..........$this->index......=.
8a40 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 24 74 68 69 73 2d 3e 61 null;............while.($this->a
8a60 64 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 ddress.=.$this->_splitAddresses(
8a80 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 $this->address)).{..............
8aa0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a continue;..........}............
8ac0 20 20 20 20 20 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 ........if.($this->address.===.f
8ae0 61 6c 73 65 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 0d 0a alse.||.isset($this->error)).{..
8b00 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
8b20 72 72 6f 72 28 24 74 68 69 73 2d 3e 65 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a rror($this->error);..........}..
8b40 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 52 65 73 65 74 20 74 69 6d 65 72 20 73 69 6e 63 65 20 6c ..........//.Reset.timer.since.l
8b60 61 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 63 61 6e 20 74 61 arge.amounts.of.addresses.can.ta
8b80 6b 65 20 61 20 6c 6f 6e 67 20 74 69 6d 65 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 67 65 ke.a.long.time.to..........//.ge
8ba0 74 20 68 65 72 65 0d 0a 20 20 20 20 20 20 20 20 73 65 74 5f 74 69 6d 65 5f 6c 69 6d 69 74 28 33 t.here..........set_time_limit(3
8bc0 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4c 6f 6f 70 20 74 68 72 6f 75 67 68 20 61 0);............//.Loop.through.a
8be0 6c 6c 20 74 68 65 20 61 64 64 72 65 73 73 65 73 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 ll.the.addresses..........for.($
8c00 69 20 3d 20 30 3b 20 24 69 20 3c 20 63 6f 75 6e 74 28 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 i.=.0;.$i.<.count($this->address
8c20 65 73 29 3b 20 24 69 2b 2b 29 7b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 es);.$i++){................if.((
8c40 24 72 65 74 75 72 6e 20 3d 20 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 41 64 64 72 65 73 $return.=.$this->_validateAddres
8c60 73 28 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 65 73 5b 24 69 5d 29 29 20 3d 3d 3d 20 66 61 6c s($this->addresses[$i])).===.fal
8c80 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 69 73 73 65 74 28 24 74 68 se..................||.isset($th
8ca0 69 73 2d 3e 65 72 72 6f 72 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 is->error)).{..................r
8cc0 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 74 68 69 73 2d 3e 65 eturn.$this->raiseError($this->e
8ce0 72 72 6f 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 rror);..............}...........
8d00 20 20 20 0d 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 6e 65 73 .................if.(!$this->nes
8d20 74 47 72 6f 75 70 73 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 68 69 tGroups).{..................$thi
8d40 73 2d 3e 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 74 68 69 73 s->structure.=.array_merge($this
8d60 2d 3e 73 74 72 75 63 74 75 72 65 2c 20 24 72 65 74 75 72 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 ->structure,.$return);..........
8d80 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 74 ....}.else.{..................$t
8da0 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 6e 3b 0d 0a 20 20 20 his->structure[].=.$return;.....
8dc0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 .........}..........}...........
8de0 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 0d 0a 20 20 20 20 7d .return.$this->structure;......}
8e00 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 53 70 6c 69 74 73 20 61 6e 20 61 64 ......../**.......*.Splits.an.ad
8e20 64 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 0d 0a dress.into.seperate.addresses...
8e40 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d .....*........*.@access.private.
8e60 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 65 73 73 20 54 ......*.@param.string.$address.T
8e80 68 65 20 61 64 64 72 65 73 73 65 73 20 74 6f 20 73 70 6c 69 74 2e 0d 0a 20 20 20 20 20 2a 20 40 he.addresses.to.split........*.@
8ea0 72 65 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 return.boolean.Success.or.failur
8ec0 65 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 73 70 6c 69 74 e........*/......function._split
8ee0 41 64 64 72 65 73 73 65 73 28 24 61 64 64 72 65 73 73 29 0d 0a 20 20 20 20 7b 0d 0a 0d 0a 20 20 Addresses($address)......{......
8f00 20 20 20 20 20 20 69 66 20 28 21 65 6d 70 74 79 28 24 74 68 69 73 2d 3e 6c 69 6d 69 74 29 20 41 ......if.(!empty($this->limit).A
8f20 4e 44 20 63 6f 75 6e 74 28 24 74 68 69 73 2d 3e 61 64 64 72 65 73 73 65 73 29 20 3d 3d 20 24 74 ND.count($this->addresses).==.$t
8f40 68 69 73 2d 3e 6c 69 6d 69 74 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 his->limit).{..............retur
8f60 6e 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 n.'';..........}............if.(
8f80 24 74 68 69 73 2d 3e 5f 69 73 47 72 6f 75 70 28 24 61 64 64 72 65 73 73 29 20 26 26 20 21 69 73 $this->_isGroup($address).&&.!is
8fa0 73 65 74 28 24 74 68 69 73 2d 3e 65 72 72 6f 72 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 set($this->error)).{............
8fc0 20 20 24 73 70 6c 69 74 5f 63 68 61 72 20 3d 20 27 3b 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 ..$split_char.=.';';............
8fe0 20 20 24 69 73 5f 67 72 6f 75 70 20 20 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d ..$is_group...=.true;..........}
9000 20 65 6c 73 65 69 66 20 28 21 69 73 73 65 74 28 24 74 68 69 73 2d 3e 65 72 72 6f 72 29 29 20 7b .elseif.(!isset($this->error)).{
9020 0d 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 20 27 2c 27 3b ..............$split_char.=.',';
9040 0d 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 66 61 6c 73 ..............$is_group...=.fals
9060 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20 28 69 73 73 65 74 28 24 74 68 69 e;..........}.elseif.(isset($thi
9080 73 2d 3e 65 72 72 6f 72 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e s->error)).{..............return
90a0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f .false;..........}............//
90c0 20 53 70 6c 69 74 20 74 68 65 20 73 74 72 69 6e 67 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 61 .Split.the.string.based.on.the.a
90e0 62 6f 76 65 20 74 65 6e 20 6f 72 20 73 6f 20 6c 69 6e 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 24 bove.ten.or.so.lines...........$
9100 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 68 61 72 2c 20 24 61 parts..=.explode($split_char,.$a
9120 64 64 72 65 73 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 20 3d 20 24 74 68 69 ddress);..........$string.=.$thi
9140 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 6c 69 74 5f 63 68 s->_splitCheck($parts,.$split_ch
9160 61 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 61 20 67 72 6f 75 70 2e 2e 2e ar);............//.If.a.group...
9180 0d 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 0d 0a 20 20 20 20 ..........if.($is_group).{......
91a0 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 20 63 ........//.If.$string.does.not.c
91c0 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 0d 0a 20 20 20 20 20 ontain.a.colon.outside.of.......
91e0 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 68 .......//.brackets/quotes.etc.th
9200 65 6e 20 73 6f 6d 65 74 68 69 6e 67 27 73 20 66 75 62 61 72 2e 0d 0a 0d 0a 20 20 20 20 20 20 20 en.something's.fubar............
9220 20 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 .....//.First.check.there's.a.co
9240 6c 6f 6e 20 61 74 20 61 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 lon.at.all:..............if.(str
9260 70 6f 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 0d 0a pos($string,.':').===.false).{..
9280 20 20 20 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 ................$this->error.=.'
92a0 49 6e 76 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 0d 0a 20 Invalid.address:.'...$string;...
92c0 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 0d 0a 20 20 ...............return.false;....
92e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f ..........}................//.No
9300 77 20 63 68 65 63 6b 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 w.check.it's.outside.of.brackets
9320 2f 71 75 6f 74 65 73 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 24 74 68 69 73 /quotes:..............if.(!$this
9340 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 65 78 70 6c 6f 64 65 28 27 3a 27 2c 20 24 73 74 72 69 ->_splitCheck(explode(':',.$stri
9360 6e 67 29 2c 20 27 3a 27 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ng),.':'))..................retu
9380 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57 65 20 6d rn.false;................//.We.m
93a0 75 73 74 20 68 61 76 65 20 61 20 67 72 6f 75 70 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 ust.have.a.group.at.this.point,.
93c0 73 6f 20 69 6e 63 72 65 61 73 65 20 74 68 65 20 63 6f 75 6e 74 65 72 3a 0d 0a 20 20 20 20 20 20 so.increase.the.counter:........
93e0 20 20 20 20 20 20 24 74 68 69 73 2d 3e 6e 75 6d 5f 67 72 6f 75 70 73 2b 2b 3b 0d 0a 20 20 20 20 ......$this->num_groups++;......
9400 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 24 73 74 72 69 6e 67 20 6e 6f 77 20 ....}............//.$string.now.
9420 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 66 69 72 73 74 20 66 75 6c 6c 20 61 64 64 72 65 73 73 2f contains.the.first.full.address/
9440 67 72 6f 75 70 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 64 64 20 74 6f 20 74 68 65 20 61 64 group...........//.Add.to.the.ad
9460 64 72 65 73 73 65 73 20 61 72 72 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 61 dresses.array...........$this->a
9480 64 64 72 65 73 73 65 73 5b 5d 20 3d 20 61 72 72 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ddresses[].=.array(.............
94a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 61 64 64 72 65 73 73 ........................'address
94c0 27 20 3d 3e 20 74 72 69 6d 28 24 73 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 '.=>.trim($string),.............
94e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 72 6f 75 70 27 20 ........................'group'.
9500 20 20 3d 3e 20 24 69 73 5f 67 72 6f 75 70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..=>.$is_group..................
9520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 ...................);...........
9540 20 2f 2f 20 52 65 6d 6f 76 65 20 74 68 65 20 6e 6f 77 20 73 74 6f 72 65 64 20 61 64 64 72 65 73 .//.Remove.the.now.stored.addres
9560 73 20 66 72 6f 6d 20 74 68 65 20 69 6e 69 74 69 61 6c 20 6c 69 6e 65 2c 20 74 68 65 20 2b 31 0d s.from.the.initial.line,.the.+1.
9580 0a 20 20 20 20 20 20 20 20 2f 2f 20 69 73 20 74 6f 20 61 63 63 6f 75 6e 74 20 66 6f 72 20 74 68 .........//.is.to.account.for.th
95a0 65 20 65 78 70 6c 6f 64 65 20 63 68 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 24 61 e.explode.character...........$a
95c0 64 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 73 ddress.=.trim(substr($address,.s
95e0 74 72 6c 65 6e 28 24 73 74 72 69 6e 67 29 20 2b 20 31 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 trlen($string).+.1));...........
9600 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 63 6f 6d 6d 61 20 .//.If.the.next.char.is.a.comma.
9620 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 0d 0a 20 20 20 20 and.this.was.a.group,.then......
9640 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 73 73 65 73 2c ....//.there.are.more.addresses,
9660 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 79 20 6d 6f 72 .otherwise,.if.there.are.any.mor
9680 65 0d 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 65 72 65 20 e..........//.chars,.then.there.
96a0 69 73 20 61 6e 6f 74 68 65 72 20 61 64 64 72 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 69 66 20 is.another.address...........if.
96c0 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 2c 20 30 ($is_group.&&.substr($address,.0
96e0 2c 20 31 29 20 3d 3d 20 27 2c 27 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 ,.1).==.','){..............$addr
9700 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 29 3b ess.=.trim(substr($address,.1));
9720 0d 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 0d 0a ..............return.$address;..
9740 0d 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 ..........}.elseif.(strlen($addr
9760 65 73 73 29 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ess).>.0).{..............return.
9780 24 61 64 64 72 65 73 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 $address;............}.else.{...
97a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20 7d ...........return.'';..........}
97c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 79 6f 75 20 67 6f 74 20 68 65 72 65 20 74 ............//.If.you.got.here.t
97e0 68 65 6e 20 73 6f 6d 65 74 68 69 6e 67 27 73 20 6f 66 66 0d 0a 20 20 20 20 20 20 20 20 72 65 74 hen.something's.off..........ret
9800 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 urn.false;......}......../**....
9820 20 20 20 2a 20 43 68 65 63 6b 73 20 66 6f 72 20 61 20 67 72 6f 75 70 20 61 74 20 74 68 65 20 73 ...*.Checks.for.a.group.at.the.s
9840 74 61 72 74 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 tart.of.the.string........*.....
9860 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 20 2a 20 40 70 61 ...*.@access.private.......*.@pa
9880 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 64 64 72 65 73 73 20 ram.string.$address.The.address.
98a0 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 to.check........*.@return.boolea
98c0 6e 20 57 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 72 65 20 69 73 20 61 20 67 72 6f 75 n.Whether.or.not.there.is.a.grou
98e0 70 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 2e 0d 0a 20 p.at.the.start.of.the.string....
9900 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 69 73 47 72 6f 75 70 28 24 61 ....*/......function._isGroup($a
9920 64 64 72 65 73 73 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 46 69 72 73 74 ddress)......{..........//.First
9940 20 63 6f 6d 6d 61 20 6e 6f 74 20 69 6e 20 71 75 6f 74 65 73 2c 20 61 6e 67 6c 65 73 20 6f 72 20 .comma.not.in.quotes,.angles.or.
9960 65 73 63 61 70 65 64 3a 0d 0a 20 20 20 20 20 20 20 20 24 70 61 72 74 73 20 20 3d 20 65 78 70 6c escaped:..........$parts..=.expl
9980 6f 64 65 28 27 2c 27 2c 20 24 61 64 64 72 65 73 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 24 73 74 ode(',',.$address);..........$st
99a0 72 69 6e 67 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 ring.=.$this->_splitCheck($parts
99c0 2c 20 27 2c 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 77 20 77 65 20 68 61 76 ,.',');............//.Now.we.hav
99e0 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 61 6e 20 72 65 6c 69 e.the.first.address,.we.can.reli
9a00 61 62 6c 79 20 63 68 65 63 6b 20 66 6f 72 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 67 72 6f ably.check.for.a..........//.gro
9a20 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 6e 20 74 68 61 74 up.by.searching.for.a.colon.that
9a40 27 73 20 6e 6f 74 20 65 73 63 61 70 65 64 20 6f 72 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 's.not.escaped.or.in..........//
9a60 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 0d 0a 20 20 20 20 .quotes.or.angle.brackets.......
9a80 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 64 65 28 27 ....if.(count($parts.=.explode('
9aa0 3a 27 2c 20 24 73 74 72 69 6e 67 29 29 20 3e 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 :',.$string)).>.1).{............
9ac0 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 63 6b 28 ..$string2.=.$this->_splitCheck(
9ae0 24 70 61 72 74 73 2c 20 27 3a 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 $parts,.':');..............retur
9b00 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 0d 0a 20 20 20 20 20 n.($string2.!==.$string);.......
9b20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ...}.else.{..............return.
9b40 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 false;..........}......}........
9b60 2f 2a 2a 0d 0a 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 /**.......*.A.common.function.th
9b80 61 74 20 77 69 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 at.will.check.an.exploded.string
9ba0 2e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 ........*........*.@access.priva
9bc0 74 65 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 61 72 72 61 79 20 24 70 61 72 74 73 20 54 te.......*.@param.array.$parts.T
9be0 68 65 20 65 78 6c 6f 64 65 64 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 he.exloded.string........*.@para
9c00 6d 20 73 74 72 69 6e 67 20 24 63 68 61 72 20 20 54 68 65 20 63 68 61 72 20 74 68 61 74 20 77 61 m.string.$char..The.char.that.wa
9c20 73 20 65 78 70 6c 6f 64 65 64 20 6f 6e 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d s.exploded.on........*.@return.m
9c40 69 78 65 64 20 46 61 6c 73 65 20 69 66 20 74 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e ixed.False.if.the.string.contain
9c60 73 20 75 6e 63 6c 6f 73 65 64 20 71 75 6f 74 65 73 2f 62 72 61 63 6b 65 74 73 2c 20 6f 72 20 74 s.unclosed.quotes/brackets,.or.t
9c80 68 65 20 73 74 72 69 6e 67 20 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a he.string.on.success........*/..
9ca0 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c ....function._splitCheck($parts,
9cc0 20 24 63 68 61 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 20 .$char)......{..........$string.
9ce0 3d 20 24 70 61 72 74 73 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 =.$parts[0];............for.($i.
9d00 3d 20 30 3b 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 20 7b =.0;.$i.<.count($parts);.$i++).{
9d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 74 68 69 73 2d 3e 5f 68 61 73 55 6e 63 ..............if.($this->_hasUnc
9d40 6c 6f 73 65 64 51 75 6f 74 65 73 28 24 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 losedQuotes($string)............
9d60 20 20 20 20 20 20 7c 7c 20 24 74 68 69 73 2d 3e 5f 68 61 73 55 6e 63 6c 6f 73 65 64 42 72 61 63 ......||.$this->_hasUnclosedBrac
9d80 6b 65 74 73 28 24 73 74 72 69 6e 67 2c 20 27 3c 3e 27 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 kets($string,.'<>').............
9da0 20 20 20 20 20 7c 7c 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
9dc0 65 74 73 28 24 73 74 72 69 6e 67 2c 20 27 5b 5d 27 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ets($string,.'[]')..............
9de0 20 20 20 20 7c 7c 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 65 ....||.$this->_hasUnclosedBracke
9e00 74 73 28 24 73 74 72 69 6e 67 2c 20 27 28 29 27 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ts($string,.'()')...............
9e20 20 20 20 7c 7c 20 73 75 62 73 74 72 28 24 73 74 72 69 6e 67 2c 20 2d 31 29 20 3d 3d 20 27 5c 5c ...||.substr($string,.-1).==.'\\
9e40 27 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 ').{..................if.(isset(
9e60 24 70 61 72 74 73 5b 24 69 20 2b 20 31 5d 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 $parts[$i.+.1])).{..............
9e80 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 20 3d 20 24 73 74 72 69 6e 67 20 2e 20 24 63 68 61 ........$string.=.$string...$cha
9ea0 72 20 2e 20 24 70 61 72 74 73 5b 24 69 20 2b 20 31 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 r...$parts[$i.+.1];.............
9ec0 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....}.else.{...................
9ee0 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 64 20 61 64 64 72 65 ...$this->error.=.'Invalid.addre
9f00 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 20 6f 72 20 71 75 6f ss.spec..Unclosed.bracket.or.quo
9f20 74 65 73 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 tes';......................retur
9f40 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 n.false;..................}.....
9f60 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .........}.else.{...............
9f80 20 20 20 24 74 68 69 73 2d 3e 69 6e 64 65 78 20 3d 20 24 69 3b 0d 0a 20 20 20 20 20 20 20 20 20 ...$this->index.=.$i;...........
9fa0 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 .......break;..............}....
9fc0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 73 74 72 69 6e ......}............return.$strin
9fe0 67 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 43 68 65 g;......}......../**.......*.Che
a000 63 6b 73 20 69 66 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 cks.if.a.string.has.an.unclosed.
a020 71 75 6f 74 65 73 20 6f 72 20 6e 6f 74 2e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 quotes.or.not........*........*.
a040 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 @access.private.......*.@param.s
a060 74 72 69 6e 67 20 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 tring.$string.The.string.to.chec
a080 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 61 6e 20 54 72 75 65 20 k........*.@return.boolean.True.
a0a0 69 66 20 74 68 65 72 65 20 61 72 65 20 75 6e 63 6c 6f 73 65 64 20 71 75 6f 74 65 73 20 69 6e 73 if.there.are.unclosed.quotes.ins
a0c0 69 64 65 20 74 68 65 20 73 74 72 69 6e 67 2c 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e ide.the.string,.false.otherwise.
a0e0 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 68 61 73 55 6e 63 6c .......*/......function._hasUncl
a100 6f 73 65 64 51 75 6f 74 65 73 28 24 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 osedQuotes($string)......{......
a120 20 20 20 20 24 73 74 72 69 6e 67 20 20 20 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 22 27 2c 20 24 ....$string.....=.explode('"',.$
a140 73 74 72 69 6e 67 29 3b 0d 0a 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 5f 63 6e 74 20 3d 20 string);..........$string_cnt.=.
a160 63 6f 75 6e 74 28 24 73 74 72 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 count($string);............for.(
a180 24 69 20 3d 20 30 3b 20 24 69 20 3c 20 28 63 6f 75 6e 74 28 24 73 74 72 69 6e 67 29 20 2d 20 31 $i.=.0;.$i.<.(count($string).-.1
a1a0 29 3b 20 24 69 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 73 74 72 );.$i++)..............if.(substr
a1c0 28 24 73 74 72 69 6e 67 5b 24 69 5d 2c 20 2d 31 29 20 3d 3d 20 27 5c 5c 27 29 0d 0a 20 20 20 20 ($string[$i],.-1).==.'\\')......
a1e0 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 5f 63 6e 74 2d 2d 3b 0d 0a 0d 0a 20 20 ............$string_cnt--;......
a200 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 24 73 74 72 69 6e 67 5f 63 6e 74 20 25 20 32 20 3d 3d ......return.($string_cnt.%.2.==
a220 3d 20 30 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 =.0);......}......../**.......*.
a240 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 20 75 6e 63 6c 6f 73 Checks.if.a.string.has.an.unclos
a260 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 54 41 4e 54 3a 0d 0a ed.brackets.or.not..IMPORTANT:..
a280 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 65 73 20 62 6f 74 .....*.This.function.handles.bot
a2a0 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 65 20 62 72 61 63 h.angle.brackets.and.square.brac
a2c0 6b 65 74 73 3b 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 kets;.......*........*.@access.p
a2e0 72 69 76 61 74 65 0d 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 rivate.......*.@param.string.$st
a300 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 0d 0a 20 20 20 20 20 ring.The.string.to.check........
a320 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 61 72 *.@param.string.$chars..The.char
a340 61 63 74 65 72 73 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 acters.to.check.for........*.@re
a360 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 75 turn.boolean.True.if.there.are.u
a380 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 69 nclosed.brackets.inside.the.stri
a3a0 6e 67 2c 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 ng,.false.otherwise........*/...
a3c0 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 73 ...function._hasUnclosedBrackets
a3e0 28 24 73 74 72 69 6e 67 2c 20 24 63 68 61 72 73 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 ($string,.$chars)......{........
a400 20 20 24 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 ..$num_angle_start.=.substr_coun
a420 74 28 24 73 74 72 69 6e 67 2c 20 24 63 68 61 72 73 5b 30 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 t($string,.$chars[0]);..........
a440 24 6e 75 6d 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 $num_angle_end...=.substr_count(
a460 24 73 74 72 69 6e 67 2c 20 24 63 68 61 72 73 5b 31 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 $string,.$chars[1]);............
a480 24 74 68 69 73 2d 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 $this->_hasUnclosedBracketsSub($
a4a0 73 74 72 69 6e 67 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 string,.$num_angle_start,.$chars
a4c0 5b 30 5d 29 3b 0d 0a 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 [0]);..........$this->_hasUnclos
a4e0 65 64 42 72 61 63 6b 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 edBracketsSub($string,.$num_angl
a500 65 5f 65 6e 64 2c 20 24 63 68 61 72 73 5b 31 5d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 e_end,.$chars[1]);............if
a520 20 28 24 6e 75 6d 5f 61 6e 67 6c 65 5f 73 74 61 72 74 20 3c 20 24 6e 75 6d 5f 61 6e 67 6c 65 5f .($num_angle_start.<.$num_angle_
a540 65 6e 64 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 74 68 69 73 2d 3e 65 72 72 6f 72 end).{..............$this->error
a560 20 3d 20 27 49 6e 76 61 6c 69 64 20 61 64 64 72 65 73 73 20 73 70 65 63 2e 20 55 6e 6d 61 74 63 .=.'Invalid.address.spec..Unmatc
a580 68 65 64 20 71 75 6f 74 65 20 6f 72 20 62 72 61 63 6b 65 74 20 28 27 20 2e 20 24 63 68 61 72 73 hed.quote.or.bracket.('...$chars
a5a0 20 2e 20 27 29 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 ...')';..............return.fals
a5c0 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 e;..........}.else.{............
a5e0 20 20 72 65 74 75 72 6e 20 28 24 6e 75 6d 5f 61 6e 67 6c 65 5f 73 74 61 72 74 20 3e 20 24 6e 75 ..return.($num_angle_start.>.$nu
a600 6d 5f 61 6e 67 6c 65 5f 65 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d m_angle_end);..........}......}.
a620 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 53 75 62 20 66 75 6e 63 74 69 6f 6e 20 ......./**.......*.Sub.function.
a640 74 68 61 74 20 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 62 79 20 68 61 73 55 6e 63 6c 6f 73 65 64 that.is.used.only.by.hasUnclosed
a660 42 72 61 63 6b 65 74 73 28 29 2e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 Brackets()........*........*.@ac
a680 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 cess.private.......*.@param.stri
a6a0 6e 67 20 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 0d ng.$string.The.string.to.check..
a6c0 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 69 6e 74 65 67 65 72 20 26 24 6e 75 6d 20 20 20 20 ......*.@param.integer.&$num....
a6e0 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6f 63 63 75 72 65 6e 63 65 73 2e 0d 0a 20 20 20 20 20 The.number.of.occurences........
a700 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 63 68 61 72 20 20 20 54 68 65 20 63 68 61 72 *.@param.string.$char...The.char
a720 61 63 74 65 72 20 74 6f 20 63 6f 75 6e 74 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 acter.to.count........*.@return.
a740 69 6e 74 65 67 65 72 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6f 63 63 75 72 65 6e 63 65 73 integer.The.number.of.occurences
a760 20 6f 66 20 24 63 68 61 72 20 69 6e 20 24 73 74 72 69 6e 67 2c 20 61 64 6a 75 73 74 65 64 20 66 .of.$char.in.$string,.adjusted.f
a780 6f 72 20 62 61 63 6b 73 6c 61 73 68 65 73 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 or.backslashes........*/......fu
a7a0 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 53 75 62 28 24 nction._hasUnclosedBracketsSub($
a7c0 73 74 72 69 6e 67 2c 20 26 24 6e 75 6d 2c 20 24 63 68 61 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 string,.&$num,.$char)......{....
a7e0 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 2c 20 24 73 ......$parts.=.explode($char,.$s
a800 74 72 69 6e 67 29 3b 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d 20 30 3b 20 24 69 tring);..........for.($i.=.0;.$i
a820 20 3c 20 63 6f 75 6e 74 28 24 70 61 72 74 73 29 3b 20 24 69 2b 2b 29 7b 0d 0a 20 20 20 20 20 20 .<.count($parts);.$i++){........
a840 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 31 29 ......if.(substr($parts[$i],.-1)
a860 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 64 51 .==.'\\'.||.$this->_hasUnclosedQ
a880 75 6f 74 65 73 28 24 70 61 72 74 73 5b 24 69 5d 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 uotes($parts[$i]))..............
a8a0 20 20 20 20 24 6e 75 6d 2d 2d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 ....$num--;..............if.(iss
a8c0 65 74 28 24 70 61 72 74 73 5b 24 69 20 2b 20 31 5d 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 et($parts[$i.+.1])).............
a8e0 20 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 .....$parts[$i.+.1].=.$parts[$i]
a900 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 0d 0a 20 20 20 20 ...$char...$parts[$i.+.1];......
a920 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ....}....................return.
a940 24 6e 75 6d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 $num;......}......../**.......*.
a960 46 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 67 69 6e 20 63 68 65 63 6b 69 6e 67 20 74 68 65 20 61 Function.to.begin.checking.the.a
a980 64 64 72 65 73 73 2e 0d 0a 20 20 20 20 20 2a 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 ddress........*.......*.@access.
a9a0 70 72 69 76 61 74 65 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 61 private.......*.@param.string.$a
a9c0 64 64 72 65 73 73 20 54 68 65 20 61 64 64 72 65 73 73 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0d ddress.The.address.to.validate..
a9e0 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 20 6f 6e 20 66 ......*.@return.mixed.False.on.f
aa00 61 69 6c 75 72 65 2c 20 6f 72 20 61 20 73 74 72 75 63 74 75 72 65 64 20 61 72 72 61 79 20 6f 66 ailure,.or.a.structured.array.of
aa20 20 61 64 64 72 65 73 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 73 75 63 63 65 73 73 2e .address.information.on.success.
aa40 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 .......*/......function._validat
aa60 65 41 64 64 72 65 73 73 28 24 61 64 64 72 65 73 73 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 eAddress($address)......{.......
aa80 20 20 20 24 69 73 5f 67 72 6f 75 70 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 ...$is_group.=.false;...........
aaa0 20 69 66 20 28 24 61 64 64 72 65 73 73 5b 27 67 72 6f 75 70 27 5d 29 20 7b 0d 0a 20 20 20 20 20 .if.($address['group']).{.......
aac0 20 20 20 20 20 20 20 24 69 73 5f 67 72 6f 75 70 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 .......$is_group.=.true;........
aae0 20 20 20 20 20 20 20 20 2f 2f 20 47 65 74 20 74 68 65 20 67 72 6f 75 70 20 70 61 72 74 20 6f 66 ........//.Get.the.group.part.of
ab00 20 74 68 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70 61 72 74 73 20 20 20 .the.name..............$parts...
ab20 20 20 3d 20 65 78 70 6c 6f 64 65 28 27 3a 27 2c 20 24 61 64 64 72 65 73 73 5b 27 61 64 64 72 65 ..=.explode(':',.$address['addre
ab40 73 73 27 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 67 72 6f 75 70 6e 61 6d 65 20 3d ss']);..............$groupname.=
ab60 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 3a 27 29 .$this->_splitCheck($parts,.':')
ab80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 61 72 72 61 ;..............$structure.=.arra
aba0 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 6e 64 20 76 61 6c 69 64 y();................//.And.valid
abc0 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 6e 61 6d 65 2e 0d ate.the.group.part.of.the.name..
abe0 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 61 6c 69 64 61 .............if.(!$this->_valida
ac00 74 65 50 68 72 61 73 65 28 24 67 72 6f 75 70 6e 61 6d 65 29 29 7b 0d 0a 20 20 20 20 20 20 20 20 tePhrase($groupname)){..........
ac20 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 70 20 6e 61 ........$this->error.=.'Group.na
ac40 6d 65 20 64 69 64 20 6e 6f 74 20 76 61 6c 69 64 61 74 65 2e 27 3b 0d 0a 20 20 20 20 20 20 20 20 me.did.not.validate.';..........
ac60 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 ........return.false;...........
ac80 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 ...}.else.{..................//.
aca0 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 6e Don't.include.groups.if.we.are.n
acc0 6f 74 20 6e 65 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 74 ot.nesting..................//.t
ace0 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
ad00 69 64 20 61 64 64 72 65 73 73 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 id.addresses...................i
ad20 66 20 28 24 74 68 69 73 2d 3e 6e 65 73 74 47 72 6f 75 70 73 29 20 7b 0d 0a 20 20 20 20 20 20 20 f.($this->nestGroups).{.........
ad40 20 20 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 .............$structure.=.new.st
ad60 64 43 6c 61 73 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 dClass;......................$st
ad80 72 75 63 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 ructure->groupname.=.$groupname;
ada0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ..................}.............
adc0 20 7d 0d 0a 0d 0a 20 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 .}................$address['addr
ade0 65 73 73 27 5d 20 3d 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 ess'].=.ltrim(substr($address['a
ae00 64 64 72 65 73 73 27 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 ddress'],.strlen($groupname...':
ae20 27 29 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 49 ')));..........}............//.I
ae40 66 20 61 20 67 72 6f 75 70 20 74 68 65 6e 20 73 70 6c 69 74 20 6f 6e 20 63 6f 6d 6d 61 20 61 6e f.a.group.then.split.on.comma.an
ae60 64 20 70 75 74 20 69 6e 74 6f 20 61 6e 20 61 72 72 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f d.put.into.an.array...........//
ae80 20 4f 74 68 65 72 77 69 73 65 2c 20 4a 75 73 74 20 70 75 74 20 74 68 65 20 77 68 6f 6c 65 20 61 .Otherwise,.Just.put.the.whole.a
aea0 64 64 72 65 73 73 20 69 6e 20 61 6e 20 61 72 72 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 69 66 20 ddress.in.an.array...........if.
aec0 28 24 69 73 5f 67 72 6f 75 70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 ($is_group).{..............while
aee0 20 28 73 74 72 6c 65 6e 28 24 61 64 64 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 29 20 3e 20 .(strlen($address['address']).>.
af00 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 70 61 72 74 73 20 20 20 20 0).{..................$parts....
af20 20 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 5b 27 61 64 64 72 ...=.explode(',',.$address['addr
af40 65 73 73 27 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 65 73 ess']);..................$addres
af60 73 65 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 74 ses[].=.$this->_splitCheck($part
af80 73 2c 20 27 2c 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 65 s,.',');..................$addre
afa0 73 73 5b 27 61 64 64 72 65 73 73 27 5d 20 3d 20 74 72 69 6d 28 73 75 62 73 74 72 28 24 61 64 64 ss['address'].=.trim(substr($add
afc0 72 65 73 73 5b 27 61 64 64 72 65 73 73 27 5d 2c 20 73 74 72 6c 65 6e 28 65 6e 64 28 24 61 64 64 ress['address'],.strlen(end($add
afe0 72 65 73 73 65 73 29 20 2e 20 27 2c 27 29 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d resses)...',')));..............}
b000 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..........}.else.{..............
b020 24 61 64 64 72 65 73 73 65 73 5b 5d 20 3d 20 24 61 64 64 72 65 73 73 5b 27 61 64 64 72 65 73 73 $addresses[].=.$address['address
b040 27 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 '];..........}............//.Che
b060 63 6b 20 74 68 61 74 20 24 61 64 64 72 65 73 73 65 73 20 69 73 20 73 65 74 2c 20 69 66 20 61 64 ck.that.$addresses.is.set,.if.ad
b080 64 72 65 73 73 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 47 72 6f dress.like.this:..........//.Gro
b0a0 75 70 6e 61 6d 65 3a 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 6e 20 65 72 72 6f 72 73 upname:;..........//.Then.errors
b0c0 20 77 65 72 65 20 61 70 70 65 61 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 69 .were.appearing...........if.(!i
b0e0 73 73 65 74 28 24 61 64 64 72 65 73 73 65 73 29 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 sset($addresses)){..............
b100 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 70 2e 27 3b 0d 0a $this->error.=.'Empty.group.';..
b120 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 0d 0a 20 20 20 20 20 ............return.false;.......
b140 20 20 20 7d 0d 0a 0d 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 ...}............for.($i.=.0;.$i.
b160 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 0d 0a 20 20 <.count($addresses);.$i++).{....
b180 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 28 ..........$addresses[$i].=.trim(
b1a0 24 61 64 64 72 65 73 73 65 73 5b 24 69 5d 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 $addresses[$i]);..........}.....
b1c0 20 20 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 .......//.Validate.each.mailbox.
b1e0 0d 0a 20 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 ..........//.Format.could.be.one
b200 20 6f 66 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 0d 0a 20 .of:.name.<geezer@domain.com>...
b220 20 20 20 20 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 .......//.......................
b240 20 20 67 65 65 7a 65 72 40 64 6f 6d 61 69 6e 2e 63 6f 6d 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 ..geezer@domain.com..........//.
b260 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 65 7a 65 72 0d 0a ........................geezer..
b280 20 20 20 20 20 20 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 ........//.....or.any.other.form
b2a0 61 74 20 76 61 6c 69 64 20 62 79 20 52 46 43 20 38 32 32 2e 0d 0a 20 20 20 20 20 20 20 20 61 72 at.valid.by.RFC.822...........ar
b2c0 72 61 79 5f 77 61 6c 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 ray_walk($addresses,.array($this
b2e0 2c 20 27 76 61 6c 69 64 61 74 65 4d 61 69 6c 62 6f 78 27 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 ,.'validateMailbox'));..........
b300 20 20 2f 2f 20 4e 65 73 74 65 64 20 66 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 ..//.Nested.format..........if.(
b320 24 74 68 69 73 2d 3e 6e 65 73 74 47 72 6f 75 70 73 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 $this->nestGroups).{............
b340 20 20 69 66 20 28 24 69 73 5f 67 72 6f 75 70 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..if.($is_group).{..............
b360 20 20 20 20 24 73 74 72 75 63 74 75 72 65 2d 3e 61 64 64 72 65 73 73 65 73 20 3d 20 24 61 64 64 ....$structure->addresses.=.$add
b380 72 65 73 73 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 resses;..............}.else.{...
b3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 24 61 64 64 ...............$structure.=.$add
b3c0 72 65 73 73 65 73 5b 30 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 resses[0];..............}.......
b3e0 20 20 20 20 20 2f 2f 20 46 6c 61 74 20 66 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 .....//.Flat.format..........}.e
b400 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 69 73 5f 67 72 6f 75 70 lse.{..............if.($is_group
b420 29 20 7b 0d 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 72 65 20 ).{..................$structure.
b440 3d 20 61 72 72 61 79 5f 6d 65 72 67 65 28 24 73 74 72 75 63 74 75 72 65 2c 20 24 61 64 64 72 65 =.array_merge($structure,.$addre
b460 73 73 65 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 sses);..............}.else.{....
b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 72 75 63 74 75 72 65 20 3d 20 24 61 64 64 72 ..............$structure.=.$addr
b4a0 65 73 73 65 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d esses;..............}..........}
b4c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 73 74 72 75 63 74 75 72 65 3b 0d 0a ............return.$structure;..
b4e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f ....}......../**.......*.Functio
b500 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 20 70 68 72 61 73 65 2e 0d 0a 20 20 20 20 20 2a 0d n.to.validate.a.phrase........*.
b520 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 20 2a 20 ......*.@access.private.......*.
b540 40 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 @param.string.$phrase.The.phrase
b560 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 62 6f 6f 6c 65 .to.check........*.@return.boole
b580 61 6e 20 53 75 63 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 2a 2f 0d an.Success.or.failure........*/.
b5a0 0a 20 20 20 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 .....function._validatePhrase($p
b5c0 68 72 61 73 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 70 6c 69 74 73 hrase)......{..........//.Splits
b5e0 20 6f 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 54 61 62 20 6f 72 20 73 70 61 63 65 2e 0d 0a 20 .on.one.or.more.Tab.or.space....
b600 20 20 20 20 20 20 20 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 .......$parts.=.preg_split('/[.\
b620 5c 78 30 39 5d 2b 2f 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 \x09]+/',.$phrase,.-1,.PREG_SPLI
b640 54 5f 4e 4f 5f 45 4d 50 54 59 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 24 70 68 72 61 73 65 5f T_NO_EMPTY);............$phrase_
b660 70 61 72 74 73 20 3d 20 61 72 72 61 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 parts.=.array();..........while.
b680 28 63 6f 75 6e 74 28 24 70 61 72 74 73 29 20 3e 20 30 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 (count($parts).>.0){............
b6a0 20 20 24 70 68 72 61 73 65 5f 70 61 72 74 73 5b 5d 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 ..$phrase_parts[].=.$this->_spli
b6c0 74 43 68 65 63 6b 28 24 70 61 72 74 73 2c 20 27 20 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 tCheck($parts,.'.');............
b6e0 20 20 66 6f 72 20 28 24 69 20 3d 20 30 3b 20 24 69 20 3c 20 24 74 68 69 73 2d 3e 69 6e 64 65 78 ..for.($i.=.0;.$i.<.$this->index
b700 20 2b 20 31 3b 20 24 69 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 72 .+.1;.$i++)..................arr
b720 61 79 5f 73 68 69 66 74 28 24 70 61 72 74 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a ay_shift($parts);..........}....
b740 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(
b760 24 70 68 72 61 73 65 5f 70 61 72 74 73 29 3b 20 24 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 $phrase_parts);.$i++).{.........
b780 20 20 20 20 20 2f 2f 20 49 66 20 71 75 6f 74 65 64 20 73 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20 .....//.If.quoted.string:.......
b7a0 20 20 20 20 20 20 20 69 66 20 28 73 75 62 73 74 72 28 24 70 68 72 61 73 65 5f 70 61 72 74 73 5b .......if.(substr($phrase_parts[
b7c0 24 69 5d 2c 20 30 2c 20 31 29 20 3d 3d 20 27 22 27 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 $i],.0,.1).==.'"').{............
b7e0 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 51 75 6f 74 65 ......if.(!$this->_validateQuote
b800 64 53 74 72 69 6e 67 28 24 70 68 72 61 73 65 5f 70 61 72 74 73 5b 24 69 5d 29 29 0d 0a 20 20 20 dString($phrase_parts[$i])).....
b820 20 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 0d 0a .................return.false;..
b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 ................continue;.......
b860 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 74 68 65 72 .......}................//.Other
b880 77 69 73 65 20 69 74 27 73 20 61 6e 20 61 74 6f 6d 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 wise.it's.an.atom:..............
b8a0 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 28 24 70 68 72 61 73 if.(!$this->_validateAtom($phras
b8c0 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 65 3b 0d 0a 20 20 20 e_parts[$i])).return.false;.....
b8e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a .....}............return.true;..
b900 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f ....}......../**.......*.Functio
b920 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
b940 20 72 66 63 38 32 32 20 69 73 3a 0d 0a 20 20 20 20 20 2a 20 61 74 6f 6d 20 3d 20 31 2a 3c 61 6e .rfc822.is:.......*.atom.=.1*<an
b960 79 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 y.CHAR.except.specials,.SPACE.an
b980 64 20 43 54 4c 73 3e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 49 66 20 76 61 6c 69 d.CTLs>.......*........*.If.vali
b9a0 64 61 74 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 dation.($this->validate).has.bee
b9c0 6e 20 74 75 72 6e 65 64 20 6f 66 66 2c 20 74 68 65 6e 0d 0a 20 20 20 20 20 2a 20 76 61 6c 69 64 n.turned.off,.then.......*.valid
b9e0 61 74 65 41 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 ateAtom().doesn't.actually.check
ba00 20 61 6e 79 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 0d 0a .anything..This.is.so.that.you..
ba20 20 20 20 20 20 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 .....*.can.split.a.list.of.addre
ba40 73 73 65 73 20 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 sses.up.before.encoding.personal
ba60 20 6e 61 6d 65 73 0d 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 .names.......*.(umlauts,.etc.),.
ba80 66 6f 72 20 65 78 61 6d 70 6c 65 2e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 for.example........*........*.@a
baa0 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 ccess.private.......*.@param.str
bac0 69 6e 67 20 24 61 74 6f 6d 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0d 0a ing.$atom.The.string.to.check...
bae0 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 6f .....*.@return.boolean.Success.o
bb00 72 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f r.failure........*/......functio
bb20 6e 20 5f 76 61 6c 69 64 61 74 65 41 74 6f 6d 28 24 61 74 6f 6d 29 0d 0a 20 20 20 20 7b 0d 0a 20 n._validateAtom($atom)......{...
bb40 20 20 20 20 20 20 20 69 66 20 28 21 24 74 68 69 73 2d 3e 76 61 6c 69 64 61 74 65 29 20 7b 0d 0a .......if.(!$this->validate).{..
bb60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 6c 69 64 61 74 69 6f 6e 20 68 61 73 20 62 65 ............//.Validation.has.be
bb80 65 6e 20 74 75 72 6e 65 64 20 6f 66 66 3b 20 61 73 73 75 6d 65 20 74 68 65 20 61 74 6f 6d 20 69 en.turned.off;.assume.the.atom.i
bba0 73 20 6f 6b 61 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 s.okay...............return.true
bbc0 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 68 65 63 6b ;..........}............//.Check
bbe0 20 66 6f 72 20 61 6e 79 20 63 68 61 72 20 66 72 6f 6d 20 41 53 43 49 49 20 30 20 2d 20 41 53 43 .for.any.char.from.ASCII.0.-.ASC
bc00 49 49 20 31 32 37 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 70 72 65 67 5f 6d 61 74 63 68 28 II.127..........if.(!preg_match(
bc20 27 2f 5e 5b 5c 5c 78 30 30 2d 5c 5c 78 37 45 5d 2b 24 2f 69 27 2c 20 24 61 74 6f 6d 2c 20 24 6d '/^[\\x00-\\x7E]+$/i',.$atom,.$m
bc40 61 74 63 68 65 73 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 atches)).{..............return.f
bc60 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 alse;..........}............//.C
bc80 68 65 63 6b 20 66 6f 72 20 73 70 65 63 69 61 6c 73 3a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 heck.for.specials:..........if.(
bca0 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 3a 22 2e 20 5d 2f 27 preg_match('/[][()<>@,;\\:"..]/'
bcc0 2c 20 24 61 74 6f 6d 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ,.$atom)).{..............return.
bce0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 false;..........}............//.
bd00 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 28 41 53 Check.for.control.characters.(AS
bd20 43 49 49 20 30 2d 33 31 29 3a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 70 72 65 67 5f 6d 61 74 CII.0-31):..........if.(preg_mat
bd40 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 20 7b ch('/[\\x00-\\x1F]+/',.$atom)).{
bd60 0d 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 0d 0a 20 20 20 ..............return.false;.....
bd80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a .....}............return.true;..
bda0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 6f ....}......../**.......*.Functio
bdc0 6e 20 74 6f 20 76 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 n.to.validate.quoted.string,.whi
bde0 63 68 20 69 73 3a 0d 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 ch.is:.......*.quoted-string.=.<
be00 22 3e 20 2a 28 71 74 65 78 74 2f 71 75 6f 74 65 64 2d 70 61 69 72 29 20 3c 22 3e 0d 0a 20 20 20 ">.*(qtext/quoted-pair).<">.....
be20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 ..*........*.@access.private....
be40 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 71 73 74 72 69 6e 67 20 54 68 65 20 ...*.@param.string.$qstring.The.
be60 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 string.to.check.......*.@return.
be80 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 0d 0a 20 20 20 boolean.Success.or.failure......
bea0 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 51 75 6f 74 ..*/......function._validateQuot
bec0 65 64 53 74 72 69 6e 67 28 24 71 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 edString($qstring)......{.......
bee0 20 20 20 2f 2f 20 4c 65 61 64 69 6e 67 20 61 6e 64 20 74 72 61 69 6c 69 6e 67 20 22 0d 0a 20 20 ...//.Leading.and.trailing."....
bf00 20 20 20 20 20 20 24 71 73 74 72 69 6e 67 20 3d 20 73 75 62 73 74 72 28 24 71 73 74 72 69 6e 67 ......$qstring.=.substr($qstring
bf20 2c 20 31 2c 20 2d 31 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 50 65 72 66 6f 72 6d 20 ,.1,.-1);............//.Perform.
bf40 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 28 70 72 65 67 5f 6d 61 check...........return.!(preg_ma
bf60 74 63 68 28 27 2f 28 2e 29 5b 5c 78 30 44 5c 5c 5c 5c 22 5d 2f 27 2c 20 24 71 73 74 72 69 6e 67 tch('/(.)[\x0D\\\\"]/',.$qstring
bf80 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 21 3d 20 27 5c ,.$matches).&&.$matches[1].!=.'\
bfa0 5c 27 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 46 \');......}......../**.......*.F
bfc0 75 6e 63 74 69 6f 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 20 6d 61 69 6c 62 6f 78 2c 20 77 unction.to.validate.a.mailbox,.w
bfe0 68 69 63 68 20 69 73 3a 0d 0a 20 20 20 20 20 2a 20 6d 61 69 6c 62 6f 78 20 3d 20 20 20 61 64 64 hich.is:.......*.mailbox.=...add
c000 72 2d 73 70 65 63 20 20 20 20 20 20 20 20 20 3b 20 73 69 6d 70 6c 65 20 61 64 64 72 65 73 73 0d r-spec.........;.simple.address.
c020 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 65 20 72 6f 75 74 65 ......*.........../.phrase.route
c040 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 64 72 0d 0a 20 20 20 -addr.;.name.and.route-addr.....
c060 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 75 62 6c 69 63 0d 0a 20 20 20 ..*........*.@access.public.....
c080 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 54 68 65 20 ..*.@param.string.&$mailbox.The.
c0a0 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e string.to.check........*.@return
c0c0 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 0d 0a 20 20 .boolean.Success.or.failure.....
c0e0 20 20 20 2a 2f 0d 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 6c ...*/......function.validateMail
c100 62 6f 78 28 26 24 6d 61 69 6c 62 6f 78 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f box(&$mailbox)......{........../
c120 2f 20 41 20 63 6f 75 70 6c 65 20 6f 66 20 64 65 66 61 75 6c 74 73 2e 0d 0a 20 20 20 20 20 20 20 /.A.couple.of.defaults..........
c140 20 24 70 68 72 61 73 65 20 20 3d 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20 24 63 6f 6d 6d 65 6e .$phrase..=.'';..........$commen
c160 74 20 3d 20 27 27 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 61 74 63 68 20 61 6e 79 20 t.=.'';............//.Catch.any.
c180 52 46 43 38 32 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 RFC822.comments.and.store.them.s
c1a0 65 70 61 72 61 74 65 6c 79 0d 0a 20 20 20 20 20 20 20 20 24 5f 6d 61 69 6c 62 6f 78 20 3d 20 24 eparately..........$_mailbox.=.$
c1c0 6d 61 69 6c 62 6f 78 3b 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 73 74 72 6c 65 6e 28 mailbox;..........while.(strlen(
c1e0 74 72 69 6d 28 24 5f 6d 61 69 6c 62 6f 78 29 29 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 trim($_mailbox)).>.0).{.........
c200 20 20 20 20 20 24 70 61 72 74 73 20 3d 20 65 78 70 6c 6f 64 65 28 27 28 27 2c 20 24 5f 6d 61 69 .....$parts.=.explode('(',.$_mai
c220 6c 62 6f 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 62 65 66 6f 72 65 5f 63 6f 6d 6d lbox);..............$before_comm
c240 65 6e 74 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 ent.=.$this->_splitCheck($parts,
c260 20 27 28 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 24 62 65 66 6f 72 65 5f .'(');..............if.($before_
c280 63 6f 6d 6d 65 6e 74 20 21 3d 20 24 5f 6d 61 69 6c 62 6f 78 29 20 7b 0d 0a 20 20 20 20 20 20 20 comment.!=.$_mailbox).{.........
c2a0 20 20 20 20 20 20 20 20 20 2f 2f 20 46 69 72 73 74 20 63 68 61 72 20 73 68 6f 75 6c 64 20 62 65 .........//.First.char.should.be
c2c0 20 61 20 28 0d 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 .a.(..................$comment..
c2e0 20 20 3d 20 73 75 62 73 74 72 28 73 74 72 5f 72 65 70 6c 61 63 65 28 24 62 65 66 6f 72 65 5f 63 ..=.substr(str_replace($before_c
c300 6f 6d 6d 65 6e 74 2c 20 27 27 2c 20 24 5f 6d 61 69 6c 62 6f 78 29 2c 20 31 29 3b 0d 0a 20 20 20 omment,.'',.$_mailbox),.1);.....
c320 20 20 20 20 20 20 20 20 20 20 20 20 20 24 70 61 72 74 73 20 20 20 20 20 20 3d 20 65 78 70 6c 6f .............$parts......=.explo
c340 64 65 28 27 29 27 2c 20 24 63 6f 6d 6d 65 6e 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 de(')',.$comment);..............
c360 20 20 20 20 24 63 6f 6d 6d 65 6e 74 20 20 20 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 ....$comment....=.$this->_splitC
c380 68 65 63 6b 28 24 70 61 72 74 73 2c 20 27 29 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 heck($parts,.')');..............
c3a0 20 20 20 20 24 63 6f 6d 6d 65 6e 74 73 5b 5d 20 3d 20 24 63 6f 6d 6d 65 6e 74 3b 0d 0a 0d 0a 20 ....$comments[].=.$comment;.....
c3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 2b 31 20 69 73 20 66 6f 72 20 74 68 65 20 ...............//.+1.is.for.the.
c3e0 74 72 61 69 6c 69 6e 67 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 5f 6d 61 trailing.)..................$_ma
c400 69 6c 62 6f 78 20 20 20 3d 20 73 75 62 73 74 72 28 24 5f 6d 61 69 6c 62 6f 78 2c 20 73 74 72 70 ilbox...=.substr($_mailbox,.strp
c420 6f 73 28 24 5f 6d 61 69 6c 62 6f 78 2c 20 24 63 6f 6d 6d 65 6e 74 29 2b 73 74 72 6c 65 6e 28 24 os($_mailbox,.$comment)+strlen($
c440 63 6f 6d 6d 65 6e 74 29 2b 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 comment)+1);..............}.else
c460 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 .{..................break;......
c480 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ........}..........}............
c4a0 66 6f 72 28 24 69 3d 30 3b 20 24 69 3c 63 6f 75 6e 74 28 40 24 63 6f 6d 6d 65 6e 74 73 29 3b 20 for($i=0;.$i<count(@$comments);.
c4c0 24 69 2b 2b 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6d 61 69 6c 62 6f 78 20 3d 20 73 $i++){..............$mailbox.=.s
c4e0 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 24 69 5d 2e 27 29 27 tr_replace('('.$comments[$i].')'
c500 2c 20 27 27 2c 20 24 6d 61 69 6c 62 6f 78 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 ,.'',.$mailbox);..........}.....
c520 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 6f 78 29 3b 0d .....$mailbox.=.trim($mailbox);.
c540 0a 0d 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 2b 20 72 ...........//.Check.for.name.+.r
c560 6f 75 74 65 2d 61 64 64 72 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 73 74 72 28 24 6d oute-addr..........if.(substr($m
c580 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 6d 61 ailbox,.-1).==.'>'.&&.substr($ma
c5a0 69 6c 62 6f 78 2c 20 30 2c 20 31 29 20 21 3d 20 27 3c 27 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 ilbox,.0,.1).!=.'<').{..........
c5c0 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 6c ....$parts..=.explode('<',.$mail
c5e0 62 6f 78 29 3b 0d 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 box);..............$name...=.$th
c600 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 0d 0a 0d is->_splitCheck($parts,.'<');...
c620 0a 20 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 .............$phrase.....=.trim(
c640 24 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 72 6f 75 74 65 5f 61 64 64 72 $name);..............$route_addr
c660 20 3d 20 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 .=.trim(substr($mailbox,.strlen(
c680 24 6e 61 6d 65 2e 27 3c 27 29 2c 20 2d 31 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 $name.'<'),.-1));...............
c6a0 20 69 66 20 28 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 .if.($this->_validatePhrase($phr
c6c0 61 73 65 29 20 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 ase).===.false.||.($route_addr.=
c6e0 20 24 74 68 69 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 .$this->_validateRouteAddr($rout
c700 65 5f 61 64 64 72 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e_addr)).===.false).............
c720 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f .....return.false;............//
c740 20 4f 6e 6c 79 20 67 6f 74 20 61 64 64 72 2d 73 70 65 63 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 .Only.got.addr-spec..........}.e
c760 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46 69 72 73 74 20 73 6e 69 70 lse.{..............//.First.snip
c780 20 61 6e 67 6c 65 20 62 72 61 63 6b 65 74 73 20 69 66 20 70 72 65 73 65 6e 74 2e 0d 0a 20 20 20 .angle.brackets.if.present......
c7a0 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62 73 74 72 28 24 6d 61 69 6c 62 6f 78 2c 30 2c 31 .........if.(substr($mailbox,0,1
c7c0 29 20 3d 3d 20 27 3c 27 20 26 26 20 73 75 62 73 74 72 28 24 6d 61 69 6c 62 6f 78 2c 2d 31 29 20 ).==.'<'.&&.substr($mailbox,-1).
c7e0 3d 3d 20 27 3e 27 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 64 72 5f 73 ==.'>')..................$addr_s
c800 70 65 63 20 3d 20 73 75 62 73 74 72 28 24 6d 61 69 6c 62 6f 78 2c 31 2c 2d 31 29 3b 0d 0a 20 20 pec.=.substr($mailbox,1,-1);....
c820 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........else..................
c840 24 61 64 64 72 5f 73 70 65 63 20 3d 20 24 6d 61 69 6c 62 6f 78 3b 0d 0a 0d 0a 20 20 20 20 20 20 $addr_spec.=.$mailbox;..........
c860 20 20 20 20 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 ......if.(($addr_spec.=.$this->_
c880 76 61 6c 69 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 validateAddrSpec($addr_spec)).==
c8a0 3d 20 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e =.false)..................return
c8c0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f .false;..........}............//
c8e0 20 43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 6f 62 6a 65 63 74 20 74 68 61 74 20 77 69 6c 6c 20 .Construct.the.object.that.will.
c900 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 24 6d 62 6f 78 20 3d 20 6e 65 be.returned...........$mbox.=.ne
c920 77 20 73 74 64 43 6c 61 73 73 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 64 64 20 w.stdClass();............//.Add.
c940 74 68 65 20 70 68 72 61 73 65 20 28 65 76 65 6e 20 69 66 20 65 6d 70 74 79 29 20 61 6e 64 20 63 the.phrase.(even.if.empty).and.c
c960 6f 6d 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 24 6d 62 6f 78 2d 3e 70 65 72 73 6f 6e 61 6c omments..........$mbox->personal
c980 20 3d 20 24 70 68 72 61 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 24 6d 62 6f 78 2d 3e 63 6f 6d 6d .=.$phrase;..........$mbox->comm
c9a0 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 20 24 63 6f 6d 6d 65 ent..=.isset($comments).?.$comme
c9c0 6e 74 73 20 3a 20 61 72 72 61 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 nts.:.array();............if.(is
c9e0 73 65 74 28 24 72 6f 75 74 65 5f 61 64 64 72 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 set($route_addr)).{.............
ca00 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 72 5b 27 6c .$mbox->mailbox.=.$route_addr['l
ca20 6f 63 61 6c 5f 70 61 72 74 27 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6d 62 6f 78 2d ocal_part'];..............$mbox-
ca40 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 6e 27 5d >host....=.$route_addr['domain']
ca60 3b 0d 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 6c 27 ;..............$route_addr['adl'
ca80 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 5f 61 ].!==.''.?.$mbox->adl.=.$route_a
caa0 64 64 72 5b 27 61 64 6c 27 5d 20 3a 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 ddr['adl'].:.'';..........}.else
cac0 20 7b 0d 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 .{..............$mbox->mailbox.=
cae0 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 0d 0a 20 20 20 20 .$addr_spec['local_part'];......
cb00 20 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 ........$mbox->host....=.$addr_s
cb20 70 65 63 5b 27 64 6f 6d 61 69 6e 27 5d 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 pec['domain'];..........}.......
cb40 20 20 20 20 20 24 6d 61 69 6c 62 6f 78 20 3d 20 24 6d 62 6f 78 3b 0d 0a 20 20 20 20 20 20 20 20 .....$mailbox.=.$mbox;..........
cb60 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a return.true;......}......../**..
cb80 20 20 20 20 20 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 76 61 6c 69 64 61 74 65 73 20 61 .....*.This.function.validates.a
cba0 20 72 6f 75 74 65 2d 61 64 64 72 20 77 68 69 63 68 20 69 73 3a 0d 0a 20 20 20 20 20 2a 20 72 6f .route-addr.which.is:.......*.ro
cbc0 75 74 65 2d 61 64 64 72 20 3d 20 22 3c 22 20 5b 72 6f 75 74 65 5d 20 61 64 64 72 2d 73 70 65 63 ute-addr.=."<".[route].addr-spec
cbe0 20 22 3e 22 0d 0a 20 20 20 20 20 2a 0d 0a 20 20 20 20 20 2a 20 41 6e 67 6c 65 20 62 72 61 63 6b .">".......*.......*.Angle.brack
cc00 65 74 73 20 68 61 76 65 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 72 65 6d 6f 76 65 64 20 61 74 ets.have.already.been.removed.at
cc20 20 74 68 65 20 70 6f 69 6e 74 20 6f 66 0d 0a 20 20 20 20 20 2a 20 67 65 74 74 69 6e 67 20 74 6f .the.point.of.......*.getting.to
cc40 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a .this.function........*........*
cc60 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 .@access.private.......*.@param.
cc80 73 74 72 69 6e 67 20 24 72 6f 75 74 65 5f 61 64 64 72 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f string.$route_addr.The.string.to
cca0 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 65 64 20 46 61 .check........*.@return.mixed.Fa
ccc0 6c 73 65 20 6f 6e 20 66 61 69 6c 75 72 65 2c 20 6f 72 20 61 6e 20 61 72 72 61 79 20 63 6f 6e 74 lse.on.failure,.or.an.array.cont
cce0 61 69 6e 69 6e 67 20 76 61 6c 69 64 61 74 65 64 20 61 64 64 72 65 73 73 2f 72 6f 75 74 65 20 69 aining.validated.address/route.i
cd00 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 2a 2f 0d nformation.on.success........*/.
cd20 0a 20 20 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 41 64 64 72 .....function._validateRouteAddr
cd40 28 24 72 6f 75 74 65 5f 61 64 64 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f ($route_addr)......{..........//
cd60 20 43 68 65 63 6b 20 66 6f 72 20 63 6f 6c 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 .Check.for.colon...........if.(s
cd80 74 72 70 6f 73 28 24 72 6f 75 74 65 5f 61 64 64 72 2c 20 27 3a 27 29 20 21 3d 3d 20 66 61 6c 73 trpos($route_addr,.':').!==.fals
cda0 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70 61 72 74 73 20 3d 20 65 78 70 6c 6f e).{..............$parts.=.explo
cdc0 64 65 28 27 3a 27 2c 20 24 72 6f 75 74 65 5f 61 64 64 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 de(':',.$route_addr);...........
cde0 20 20 20 24 72 6f 75 74 65 20 3d 20 24 74 68 69 73 2d 3e 5f 73 70 6c 69 74 43 68 65 63 6b 28 24 ...$route.=.$this->_splitCheck($
ce00 70 61 72 74 73 2c 20 27 3a 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a parts,.':');..........}.else.{..
ce20 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 65 5f 61 64 64 72 ............$route.=.$route_addr
ce40 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 24 72 ;..........}............//.If.$r
ce60 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 68 65 6e oute.is.same.as.$route_addr.then
ce80 20 74 68 65 20 63 6f 6c 6f 6e 20 77 61 73 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 71 75 .the.colon.was.in..........//.qu
cea0 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 2c 20 otes.or.brackets.or,.of.course,.
cec0 6e 6f 6e 20 65 78 69 73 74 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 24 72 6f 75 74 non.existent...........if.($rout
cee0 65 20 3d 3d 3d 20 24 72 6f 75 74 65 5f 61 64 64 72 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e.===.$route_addr){.............
cf00 20 75 6e 73 65 74 28 24 72 6f 75 74 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 61 64 .unset($route);..............$ad
cf20 64 72 5f 73 70 65 63 20 3d 20 24 72 6f 75 74 65 5f 61 64 64 72 3b 0d 0a 20 20 20 20 20 20 20 20 dr_spec.=.$route_addr;..........
cf40 20 20 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 ....if.(($addr_spec.=.$this->_va
cf60 6c 69 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 lidateAddrSpec($addr_spec)).===.
cf80 66 61 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e false).{..................return
cfa0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 .false;..............}..........
cfc0 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 6c 69 64 61 74 }.else.{..............//.Validat
cfe0 65 20 72 6f 75 74 65 20 70 61 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 e.route.part...............if.((
d000 24 72 6f 75 74 65 20 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 $route.=.$this->_validateRoute($
d020 72 6f 75 74 65 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 route)).===.false).{............
d040 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ......return.false;.............
d060 20 7d 0d 0a 0d 0a 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 .}................$addr_spec.=.s
d080 75 62 73 74 72 28 24 72 6f 75 74 65 5f 61 64 64 72 2c 20 73 74 72 6c 65 6e 28 24 72 6f 75 74 65 ubstr($route_addr,.strlen($route
d0a0 20 2e 20 27 3a 27 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 6c 69 ...':'));................//.Vali
d0c0 64 61 74 65 20 61 64 64 72 2d 73 70 65 63 20 70 61 72 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 date.addr-spec.part.............
d0e0 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
d100 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
d120 6c 73 65 29 20 7b 0d 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 lse).{..................return.f
d140 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d alse;..............}..........}.
d160 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 73 65 74 28 24 72 6f 75 74 65 29 29 20 7b 0d ...........if.(isset($route)).{.
d180 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 24 72 .............$return['adl'].=.$r
d1a0 6f 75 74 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 oute;..........}.else.{.........
d1c0 20 20 20 20 20 24 72 65 74 75 72 6e 5b 27 61 64 6c 27 5d 20 3d 20 27 27 3b 0d 0a 20 20 20 20 20 .....$return['adl'].=.'';.......
d1e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 24 72 65 74 75 72 6e 20 3d 20 61 72 72 61 79 5f ...}............$return.=.array_
d200 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 29 3b 0d 0a 20 20 20 merge($return,.$addr_spec);.....
d220 20 20 20 20 20 72 65 74 75 72 6e 20 24 72 65 74 75 72 6e 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 .....return.$return;......}.....
d240 20 20 20 2f 2a 2a 0d 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 .../**.......*.Function.to.valid
d260 61 74 65 20 61 20 72 6f 75 74 65 2c 20 77 68 69 63 68 20 69 73 3a 0d 0a 20 20 20 20 20 2a 20 72 ate.a.route,.which.is:.......*.r
d280 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 0d 0a 20 20 20 20 20 oute.=.1#("@".domain).":".......
d2a0 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 *........*.@access.private......
d2c0 20 2a 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 .*.@param.string.$route.The.stri
d2e0 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 6d 69 78 ng.to.check........*.@return.mix
d300 65 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 ed.False.on.failure,.or.the.vali
d320 64 61 74 65 64 20 24 72 6f 75 74 65 20 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 2a dated.$route.on.success........*
d340 2f 0d 0a 20 20 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 /......function._validateRoute($
d360 72 6f 75 74 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 70 6c 69 74 20 route)......{..........//.Split.
d380 6f 6e 20 63 6f 6d 6d 61 2e 0d 0a 20 20 20 20 20 20 20 20 24 64 6f 6d 61 69 6e 73 20 3d 20 65 78 on.comma...........$domains.=.ex
d3a0 70 6c 6f 64 65 28 27 2c 27 2c 20 74 72 69 6d 28 24 72 6f 75 74 65 29 29 3b 0d 0a 0d 0a 20 20 20 plode(',',.trim($route));.......
d3c0 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 24 64 6f .....for.($i.=.0;.$i.<.count($do
d3e0 6d 61 69 6e 73 29 3b 20 24 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 64 6f mains);.$i++).{..............$do
d400 6d 61 69 6e 73 5b 24 69 5d 20 3d 20 73 74 72 5f 72 65 70 6c 61 63 65 28 27 40 27 2c 20 27 27 2c mains[$i].=.str_replace('@',.'',
d420 20 74 72 69 6d 28 24 64 6f 6d 61 69 6e 73 5b 24 69 5d 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 .trim($domains[$i]));...........
d440 20 20 20 69 66 20 28 21 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 44 6f 6d 61 69 6e 28 24 ...if.(!$this->_validateDomain($
d460 64 6f 6d 61 69 6e 73 5b 24 69 5d 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 domains[$i])).return.false;.....
d480 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 72 6f 75 74 65 3b .....}............return.$route;
d4a0 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 ......}......../**.......*.Funct
d4c0 69 6f 6e 20 74 6f 20 76 61 6c 69 64 61 74 65 20 61 20 64 6f 6d 61 69 6e 2c 20 74 68 6f 75 67 68 ion.to.validate.a.domain,.though
d4e0 20 74 68 69 73 20 69 73 20 6e 6f 74 20 71 75 69 74 65 20 77 68 61 74 0d 0a 20 20 20 20 20 2a 20 .this.is.not.quite.what.......*.
d500 79 6f 75 20 65 78 70 65 63 74 20 6f 66 20 61 20 73 74 72 69 63 74 20 69 6e 74 65 72 6e 65 74 20 you.expect.of.a.strict.internet.
d520 64 6f 6d 61 69 6e 2e 0d 0a 20 20 20 20 20 2a 0d 0a 20 20 20 20 20 2a 20 64 6f 6d 61 69 6e 20 3d domain........*.......*.domain.=
d540 20 73 75 62 2d 64 6f 6d 61 69 6e 20 2a 28 22 2e 22 20 73 75 62 2d 64 6f 6d 61 69 6e 29 0d 0a 20 .sub-domain.*(".".sub-domain)...
d560 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a ....*........*.@access.private..
d580 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 61 69 6e 20 54 68 65 .....*.@param.string.$domain.The
d5a0 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 .string.to.check........*.@retur
d5c0 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 74 68 65 n.mixed.False.on.failure,.or.the
d5e0 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 73 73 2e 0d 0a 20 .validated.domain.on.success....
d600 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 44 6f ....*/......function._validateDo
d620 6d 61 69 6e 28 24 64 6f 6d 61 69 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 2f 2f main($domain)......{..........//
d640 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 62 64 .Note.the.different.use.of.$subd
d660 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 20 20 omains.and.$sub_domains.........
d680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 24 73 75 62 64 6f 6d .........................$subdom
d6a0 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 0d 0a 0d ains.=.explode('.',.$domain);...
d6c0 0a 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 .........while.(count($subdomain
d6e0 73 29 20 3e 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 75 62 5f 64 6f 6d 61 s).>.0).{..............$sub_doma
d700 69 6e 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 ins[].=.$this->_splitCheck($subd
d720 6f 6d 61 69 6e 73 2c 20 27 2e 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 omains,.'.');..............for.(
d740 24 69 20 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 $i.=.0;.$i.<.$this->index.+.1;.$
d760 69 2b 2b 29 0d 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 i++)..................array_shif
d780 74 28 24 73 75 62 64 6f 6d 61 69 6e 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 t($subdomains);..........}......
d7a0 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 24 73 ......for.($i.=.0;.$i.<.count($s
d7c0 75 62 5f 64 6f 6d 61 69 6e 73 29 3b 20 24 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ub_domains);.$i++).{............
d7e0 20 20 69 66 20 28 21 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 61 74 65 53 75 62 64 6f 6d 61 69 6e ..if.(!$this->_validateSubdomain
d800 28 74 72 69 6d 28 24 73 75 62 5f 64 6f 6d 61 69 6e 73 5b 24 69 5d 29 29 29 0d 0a 20 20 20 20 20 (trim($sub_domains[$i]))).......
d820 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 ...........return.false;........
d840 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4d 61 6e 61 67 65 64 20 74 6f 20 67 65 74 ..}............//.Managed.to.get
d860 20 68 65 72 65 2c 20 73 6f 20 72 65 74 75 72 6e 20 69 6e 70 75 74 2e 0d 0a 20 20 20 20 20 20 20 .here,.so.return.input..........
d880 20 72 65 74 75 72 6e 20 24 64 6f 6d 61 69 6e 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f .return.$domain;......}......../
d8a0 2a 2a 0d 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 **.......*.Function.to.validate.
d8c0 61 20 73 75 62 64 6f 6d 61 69 6e 3a 0d 0a 20 20 20 20 20 2a 20 20 20 73 75 62 64 6f 6d 61 69 6e a.subdomain:.......*...subdomain
d8e0 20 3d 20 64 6f 6d 61 69 6e 2d 72 65 66 20 2f 20 64 6f 6d 61 69 6e 2d 6c 69 74 65 72 61 6c 0d 0a .=.domain-ref./.domain-literal..
d900 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d .....*........*.@access.private.
d920 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 73 75 62 64 6f 6d 61 69 6e ......*.@param.string.$subdomain
d940 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 .The.string.to.check........*.@r
d960 65 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 eturn.boolean.Success.or.failure
d980 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 ........*/......function._valida
d9a0 74 65 53 75 62 64 6f 6d 61 69 6e 28 24 73 75 62 64 6f 6d 61 69 6e 29 0d 0a 20 20 20 20 7b 0d 0a teSubdomain($subdomain)......{..
d9c0 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 5c 5b 28 2e 2a 29 ........if.(preg_match('|^\[(.*)
d9e0 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 0d 0a 20 20 20 20 20 ]$|',.$subdomain,.$arr)){.......
da00 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 44 6c 69 74 .......if.(!$this->_validateDlit
da20 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 3b 0d 0a 20 20 eral($arr[1])).return.false;....
da40 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 ......}.else.{..............if.(
da60 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 61 69 6e !$this->_validateAtom($subdomain
da80 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 )).return.false;..........}.....
daa0 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
dac0 63 63 65 73 73 66 75 6c 2e 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d ccessful...........return.true;.
dae0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 20 20 2a 20 46 75 6e 63 74 69 .....}......../**.......*.Functi
db00 6f 6e 20 74 6f 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 on.to.validate.a.domain.literal:
db20 0d 0a 20 20 20 20 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 .......*...domain-literal.=.."["
db40 20 2a 28 64 74 65 78 74 20 2f 20 71 75 6f 74 65 64 2d 70 61 69 72 29 20 22 5d 22 0d 0a 20 20 20 .*(dtext./.quoted-pair)."]".....
db60 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 0d 0a 20 20 ..*........*.@access.private....
db80 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 64 6c 69 74 65 72 61 6c 20 54 68 65 ...*.@param.string.$dliteral.The
dba0 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 .string.to.check........*.@retur
dbc0 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 0d 0a 20 n.boolean.Success.or.failure....
dbe0 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 5f 76 61 6c 69 64 61 74 65 44 6c ....*/......function._validateDl
dc00 69 74 65 72 61 6c 28 24 64 6c 69 74 65 72 61 6c 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 iteral($dliteral)......{........
dc20 20 20 72 65 74 75 72 6e 20 21 70 72 65 67 5f 6d 61 74 63 68 28 27 2f 28 2e 29 5b 5d 5b 5c 78 30 ..return.!preg_match('/(.)[][\x0
dc40 44 5c 5c 5c 5c 5d 2f 27 2c 20 24 64 6c 69 74 65 72 61 6c 2c 20 24 6d 61 74 63 68 65 73 29 20 26 D\\\\]/',.$dliteral,.$matches).&
dc60 26 20 24 6d 61 74 63 68 65 73 5b 31 5d 20 21 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20 20 7d 0d 0a 0d &.$matches[1].!=.'\\';......}...
dc80 0a 20 20 20 20 2f 2a 2a 0d 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
dca0 69 64 61 74 65 20 61 6e 20 61 64 64 72 2d 73 70 65 63 2e 0d 0a 20 20 20 20 20 2a 0d 0a 20 20 20 idate.an.addr-spec........*.....
dcc0 20 20 2a 20 61 64 64 72 2d 73 70 65 63 20 3d 20 6c 6f 63 61 6c 2d 70 61 72 74 20 22 40 22 20 64 ..*.addr-spec.=.local-part."@".d
dce0 6f 6d 61 69 6e 0d 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 omain.......*........*.@access.p
dd00 72 69 76 61 74 65 0d 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 rivate.......*.@param.string.$ad
dd20 64 72 5f 73 70 65 63 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 dr_spec.The.string.to.check.....
dd40 20 20 20 2a 20 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 ...*.@return.mixed.False.on.fail
dd60 75 72 65 2c 20 6f 72 20 74 68 65 20 76 61 6c 69 64 61 74 65 64 20 61 64 64 72 2d 73 70 65 63 20 ure,.or.the.validated.addr-spec.
dd80 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 on.success........*/......functi
dda0 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 5f 73 70 65 63 29 on._validateAddrSpec($addr_spec)
ddc0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 24 61 64 64 72 5f 73 70 65 63 20 3d 20 74 72 ......{..........$addr_spec.=.tr
dde0 69 6d 28 24 61 64 64 72 5f 73 70 65 63 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 70 im($addr_spec);............//.Sp
de00 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 0d 0a lit.on.@.sign.if.there.is.one...
de20 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 27 ........if.(strpos($addr_spec,.'
de40 40 27 29 20 21 3d 3d 20 66 61 6c 73 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70 @').!==.false).{..............$p
de60 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
de80 70 65 63 29 3b 0d 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 pec);..............$local_part.=
dea0 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 40 27 29 .$this->_splitCheck($parts,.'@')
dec0 3b 0d 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 ;..............$domain.....=.sub
dee0 73 74 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 str($addr_spec,.strlen($local_pa
df00 72 74 20 2e 20 27 40 27 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f 20 40 20 73 rt...'@'));............//.No.@.s
df20 69 67 6e 20 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 ign.so.assume.the.default.domain
df40 2e 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ...........}.else.{.............
df60 20 24 6c 6f 63 61 6c 5f 70 61 72 74 20 3d 20 24 61 64 64 72 5f 73 70 65 63 3b 0d 0a 20 20 20 20 .$local_part.=.$addr_spec;......
df80 20 20 20 20 20 20 20 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 ........$domain.....=.$this->def
dfa0 61 75 6c 74 5f 64 6f 6d 61 69 6e 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 ault_domain;..........}.........
dfc0 20 20 20 69 66 20 28 28 24 6c 6f 63 61 6c 5f 70 61 72 74 20 3d 20 24 74 68 69 73 2d 3e 5f 76 61 ...if.(($local_part.=.$this->_va
dfe0 6c 69 64 61 74 65 4c 6f 63 61 6c 50 61 72 74 28 24 6c 6f 63 61 6c 5f 70 61 72 74 29 29 20 3d 3d lidateLocalPart($local_part)).==
e000 3d 20 66 61 6c 73 65 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 =.false).return.false;..........
e020 69 66 20 28 28 24 64 6f 6d 61 69 6e 20 20 20 20 20 3d 20 24 74 68 69 73 2d 3e 5f 76 61 6c 69 64 if.(($domain.....=.$this->_valid
e040 61 74 65 44 6f 6d 61 69 6e 28 24 64 6f 6d 61 69 6e 29 29 20 3d 3d 3d 20 66 61 6c 73 65 29 20 72 ateDomain($domain)).===.false).r
e060 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 eturn.false;....................
e080 2f 2f 20 47 6f 74 20 68 65 72 65 20 73 6f 20 72 65 74 75 72 6e 20 73 75 63 63 65 73 73 66 75 6c //.Got.here.so.return.successful
e0a0 2e 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 72 61 79 28 27 6c 6f 63 61 6c 5f 70 ...........return.array('local_p
e0c0 61 72 74 27 20 3d 3e 20 24 6c 6f 63 61 6c 5f 70 61 72 74 2c 20 27 64 6f 6d 61 69 6e 27 20 3d 3e art'.=>.$local_part,.'domain'.=>
e0e0 20 24 64 6f 6d 61 69 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 .$domain);......}......../**....
e100 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 74 68 65 20 6c 6f ...*.Function.to.validate.the.lo
e120 63 61 6c 20 70 61 72 74 20 6f 66 20 61 6e 20 61 64 64 72 65 73 73 3a 0d 0a 20 20 20 20 20 2a 20 cal.part.of.an.address:.......*.
e140 20 20 6c 6f 63 61 6c 2d 70 61 72 74 20 3d 20 77 6f 72 64 20 2a 28 22 2e 22 20 77 6f 72 64 29 0d ..local-part.=.word.*(".".word).
e160 0a 20 20 20 20 20 2a 20 0d 0a 20 20 20 20 20 2a 20 40 61 63 63 65 73 73 20 70 72 69 76 61 74 65 ......*........*.@access.private
e180 0d 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 73 74 72 69 6e 67 20 24 6c 6f 63 61 6c 5f 70 61 .......*.@param.string.$local_pa
e1a0 72 74 0d 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 20 6f rt.......*.@return.mixed.False.o
e1c0 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 6c 6f 63 61 n.failure,.or.the.validated.loca
e1e0 6c 20 70 61 72 74 20 6f 6e 20 73 75 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 2a 2f 0d 0a 20 20 20 l.part.on.success........*/.....
e200 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 61 72 74 28 24 6c 6f .function._validateLocalPart($lo
e220 63 61 6c 5f 70 61 72 74 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 24 70 61 72 74 73 cal_part)......{..........$parts
e240 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 29 3b 0d 0a 0d .=.explode('.',.$local_part);...
e260 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 61 72 74 .........//.Split.the.local_part
e280 20 69 6e 74 6f 20 77 6f 72 64 73 2e 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 63 6f 75 .into.words...........while.(cou
e2a0 6e 74 28 24 70 61 72 74 73 29 20 3e 20 30 29 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 77 nt($parts).>.0){..............$w
e2c0 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 72 ords[].=.$this->_splitCheck($par
e2e0 74 73 2c 20 27 2e 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 24 69 20 3d ts,.'.');..............for.($i.=
e300 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++)
e320 20 7b 0d 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 .{..................array_shift(
e340 24 70 61 72 74 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 $parts);..............}.........
e360 20 7d 0d 0a 0d 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 .}............//.Validate.each.w
e380 6f 72 64 2e 0d 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 ord...........for.($i.=.0;.$i.<.
e3a0 63 6f 75 6e 74 28 24 77 6f 72 64 73 29 3b 20 24 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 count($words);.$i++).{..........
e3c0 20 20 20 20 69 66 20 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 ....if.($this->_validatePhrase(t
e3e0 72 69 6d 28 24 77 6f 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 rim($words[$i])).===.false).retu
e400 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 rn.false;..........}............
e420 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 74 75 72 //.Managed.to.get.here,.so.retur
e440 6e 20 74 68 65 20 69 6e 70 75 74 2e 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 24 6c 6f n.the.input...........return.$lo
e460 63 61 6c 5f 70 61 72 74 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2a 2a 0d 0a 20 20 20 cal_part;......}......../**.....
e480 20 2a 20 52 65 74 75 72 6e 73 20 61 6e 20 61 70 70 72 6f 78 69 6d 61 74 65 20 63 6f 75 6e 74 20 .*.Returns.an.approximate.count.
e4a0 6f 66 20 68 6f 77 20 6d 61 6e 79 20 61 64 64 72 65 73 73 65 73 20 61 72 65 0d 0a 20 20 20 20 2a of.how.many.addresses.are......*
e4c0 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 73 74 72 69 6e 67 2e 20 54 68 69 73 20 69 73 20 41 50 .in.the.given.string..This.is.AP
e4e0 50 52 4f 58 49 4d 41 54 45 20 61 73 20 69 74 20 6f 6e 6c 79 20 73 70 6c 69 74 73 0d 0a 20 20 20 PROXIMATE.as.it.only.splits.....
e500 20 2a 20 62 61 73 65 64 20 6f 6e 20 61 20 63 6f 6d 6d 61 20 77 68 69 63 68 20 68 61 73 20 6e 6f .*.based.on.a.comma.which.has.no
e520 20 70 72 65 63 65 64 69 6e 67 20 62 61 63 6b 73 6c 61 73 68 2e 20 43 6f 75 6c 64 20 62 65 0d 0a .preceding.backslash..Could.be..
e540 20 20 20 20 2a 20 75 73 65 66 75 6c 20 61 73 20 6c 61 72 67 65 20 61 6d 6f 75 6e 74 73 20 6f 66 ....*.useful.as.large.amounts.of
e560 20 61 64 64 72 65 73 73 65 73 20 77 69 6c 6c 20 65 6e 64 20 75 70 20 70 72 6f 64 75 63 69 6e 67 .addresses.will.end.up.producing
e580 0d 0a 20 20 20 20 2a 20 2a 6c 61 72 67 65 2a 20 73 74 72 75 63 74 75 72 65 73 20 77 68 65 6e 20 ......*.*large*.structures.when.
e5a0 75 73 65 64 20 77 69 74 68 20 70 61 72 73 65 41 64 64 72 65 73 73 4c 69 73 74 28 29 2e 0d 0a 20 used.with.parseAddressList()....
e5c0 20 20 20 2a 0d 0a 20 20 20 20 2a 20 40 70 61 72 61 6d 20 20 73 74 72 69 6e 67 20 24 64 61 74 61 ...*......*.@param..string.$data
e5e0 20 41 64 64 72 65 73 73 65 73 20 74 6f 20 63 6f 75 6e 74 0d 0a 20 20 20 20 2a 20 40 72 65 74 75 .Addresses.to.count......*.@retu
e600 72 6e 20 69 6e 74 20 20 20 20 20 20 20 20 20 20 41 70 70 72 6f 78 69 6d 61 74 65 20 63 6f 75 6e rn.int..........Approximate.coun
e620 74 0d 0a 20 20 20 20 2a 2f 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 70 70 72 6f 78 69 6d t......*/......function.approxim
e640 61 74 65 43 6f 75 6e 74 28 24 64 61 74 61 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 ateCount($data)......{..........
e660 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 28 3f 3c 21 5c 5c return.count(preg_split('/(?<!\\
e680 5c 5c 29 2c 2f 27 2c 20 24 64 61 74 61 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 3f 3e 0d 0a \\),/',.$data));......}..}..?>..
e6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................