¦bPHP¤¤¥ÎSocketµo°e¹q¤l¶l¥ó¡]1¡^
¦b§@ªÌ©Ò¥Ó½Ðªº´XÓPHP ¥D¶ªÅ¶¡¤¤¡A¯à°÷´£¨Ñmail¥\¯àªº¹ê¦b¤£¦h¡AÁ`¬O½Õ¥Î§¹mail()¨ç¼Æ¤§«á´N²@µL¤U¤å¤F¡C¦ý¬O¹q¤l¶l¥ó¦bºô¤W¥Í¬¡¤¤ªº§@¥Î¶V¨Ó¶V¤j¡C·Q¤@·QºôÂΤWºô¤£¦¬¶l¥ó¯à¥s¯u¥¿ªººôÂζܡH¶l¥óªº§@¥Î§Ú¤£·Q¦A»¡¤F¡A¦ý¬O¦pªG¥D¶ªÅ¶¡¤£¤ä«ùmail()µo°e¨º»ò«ç»ò¿ì©O¡H§Ú¤]·Q¹L³q¹Lsocket¨Ó¹ê²{¶l¥óµo°e¡A¦ýµL©`¹ï¥Îphp ¶i¦æsocket½sµ{¤£¼ô±x¡A¦A¥[¤Wµo°e¶l¥ón¥Î¨ìSMTP¨óij¡A¤SnŪ¤£¤Öªº^¤å¤F¡A©Ò¥H¤@ª½¤]¨S¦³¥h¬ã¨s¹L¡C²×¤_¦³¤@¤Ñ§Úµo²{¤F¤@½g¤å³¹¡AÃö¤_¥Îsocket½sµ{µo°e¶l¥ó¡C§Ú¦pÀò¦ÜÄ_¯ë±N¨ä«þ¨©¤U¨Ó¡A¨Ã¥B±N¨ä§ï³y¦¨¤F¤@Óphp ¥i¥ÎªºÃþ¡A¨Ñ¤j®a¨Ï¥Î¡Cì¨Óªº¤å³¹¥u¬O¤@Ó²³æªº¨Ò¤l¡A¦Ó¥BÁÙ¦³¤@¨Ç¿ù»~¡A¦b§Ú¸g¹L¦h¦¸ªº¹êÅç¡B§ï³y²×¤_±N¨ä§ï¦¨¤F¤@Óª½±µ¨Ï¥Îsocket¡A¦V«ü©wªº¶l½cµo°e¶l¥óªºÃþ¡A¦pªG¤j®a©M«e±Ãö¤_µo°eMIMEªº¤å³¹µ²¦X°_¨Ó¡A´N¥i¥H¹ê²{¦b¤£¤ä«ùmail()¨ç¼Æªººô¯¸¤Wµo°e¶l¥ó¤F¡C¦]¬°µo°e¶l¥óªº¹Lµ{»Ýn®É¶¡¡A¥i¯à»Pmail()ªº³B²z¾÷¨îÁÙ¤£§¹¥þ¤@¼Ë¡A©Ò¥H³t«×nºC¤@¨Ç¡A¦ý¬O¥i¥H¸Ñ¨M»Ýnµo°e¶l¥ó¥\¯àªº¿U¬Ü¤§«æ¡A¦P®É§A¤]¥i¥H¾Ç²ß¥Îphp ¶i¦æsocket½sµ{¡C¤U±´N±N³oÓÃþªº¹ê²{ì²z¤¶²Ðµ¹¤j®a¡A¦P®É¦V¤j®aÁ¿¸Ñ¤@¨ÇÃö¤_SMTPªº°ò¥»ª¾ÃÑ¡C
Socket½sµ{¤¶²Ð
¡@¡@¦V¤j®a¥Ó©ú¡A¥»¤H¤£¬O¤@ÓTCP/IP½sµ{±M®a¡A¬G¦b¦¹¥u¬OÁ¿¥X¤F§Úªº¤@ÂI²z¸Ñ©MÅé·|¡C
¡@¡@¨Ï¥Îfsockopen¨ç¼Æ¥´¶}¤@ÓInternet³s±µ¡A¨ç¼Æ»yªk®æ¦¡¡J
int fsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);
¡@¡@°Ñ¼Æªº·N«ä§Ú·Q¤£¥ÎÁ¿¤F¡A³o¨½¥Ñ¤_n¨Ï¥ÎSMTP¨óij¡A©Ò¥HºÝ¤f¸¹¬°25¡C¦b¥´¶}³s±µ¦¨¥\«á¡A·|ªð¦^¤@
Ósocket¥y¬`¡A¨Ï¥Î¥¦´N¥i¥H¶H¨Ï¥Î¤å¥ó¥y¬`¤@¼Ëªº¡C¥i¨Ï¥Îªº¾Þ§@¦³fputs()¡Afgets()¡Afeof()¡Afclose()
杭C
¡@¡@«Ü²³æ¦a¤¶²Ð´N¨ì³o¨½§a¡C
SMTPªº°ò¦
¡@¡@°ò¤_TCP/IPªº¦]¯Sºô¨óij¤@¯ëªº©R¥O®æ¦¡³£¬O³q¹L½Ð¨D/ À³µª¤è¦¡¹ê²{ªº¡Aªö¥Îªº³£¬O¤å¥»«H®§¡A©Ò¥H³B²z°_¨Ón®e©ö¤@¨Ç¡CSMTP¬O²³æ¶l¥ó¶Ç¿é¨óijªºÂ²ºÙ¡A¥¦¥i¥H¹ê²{«È¤áºÝ¦VªA°È¾¹µo°e¶l¥óªº¥\¯à¡C©Ò¥H¤U±©ÒÁ¿ªº©R¥O¬O«ü«È¤áºÝ¦VªA°È¾¹µo¥X½Ð¨D«ü¥O¡A¦ÓÅTÀ³«h¬O«üªA°È¾¹ªð¦^µ¹«È¤áºÝªº«H®§¡C
¡@¡@SMTP¤À¬°©R¥OÀY©M«H®§Åé¨â³¡¤À¡C©R¥OÀY¥Dn§¹¦¨«È¤áºÝ»PªA°È¾¹ªº³s±µ¡AÅçÃÒµ¥¡C¾ãÓ¹Lµ{¥Ñ¦h±ø©R¥O²Õ¦¨¡C¨CÓ©R¥Oµo¨ìªA°È¾¹«á¡A¥ÑªA°È¾¹µ¹¥XÅTÀ³«H®§¡A¤@¯ë¬°3 ¦ì¼Æ¦rªºÅTÀ³½X©MÅTÀ³¤å¥»¡C¤£¦PªºªA°È¾¹ªð¦^ªºÅTÀ³½X¬O¿í¦u¨óijªº¡A¦ý¬OÅTÀ³¥¿¤å¥»«h¤£¥²¡C¨CÓ©R¥O¤ÎÅTÀ³ªº³Ì«á³£¦³¤@Ó¦^¨®²Å¡A³o¼Ë¨Ï¥Îfputs()©Mfgets()´N¥i¥H¶i¦æ©R¥O»PÅTÀ³ªº³B²z¤F¡CSMTPªº©R¥O¤ÎÅTÀ³«H®§³£¬O³æ¦æªº¡C«H®§Åé«h¬O¶l¥óªº¥¿¤å³¡¤À¡A³Ì«áªºµ²§ô¦æÀ³¥H³æ¿Wªº"."§@¬°µ²§ô¦æ¡C
¡@¡@«È¤áºÝ¤@¨Ç±`¥ÎªºSMTP«ü¥O¬°¡J
HELO hostname: »PªA°È¾¹¥´©Û©I¨Ã§iª¾«È¤áºÝ¨Ï¥Îªº¾÷¾¹¦W¦r¡A¥i¥HÀH«K¶ñ¼g
MAIL FROM: sender_id : §i¶DªA°È¾¹µo«H¤Hªº¦a§}
RCPT TO: receiver_id : §i¶DªA°È¾¹¦¬«H¤Hªº¦a§}
DATA : ¤U±¶}©l¶Ç¿é«H¥ó¤º®e¡A¥B³Ì«án¥H¥u§t¦³.ªº¯S®í¦æµ²§ô
RESET: ¨ú®øè¤~ªº«ü¥O¡A±q·s¶}©l
VERIFY userid: ®ÕÅç±b¸¹¬O§_¦s¦b(¦¹«ü¥O¬°¥i¿ï«ü¥O¡AªA°È¾¹¥i¯à¤£¤ä«ù)
QUIT : °h¥X³s±µ¡Aµ²§ô
¡@¡@ªA°È¾¹ªð¦^ªºÅTÀ³«H®§¬°(®æ¦¡¬°¡JÅTÀ³½X+ªÅ®æ+¸ÑÄÀ)¡J
220 ªA°È´Nºü(¦bsocket³s±µ¦¨¥\®É¡A·|ªð¦^¦¹«H®§)
221 ¥¿¦b³B²z
250 ½Ð¨D¶l¥ó°Ê§@¥¿½T¡A§¹¦¨(HELO,MAIL FROM,RCPT TO,QUIT«ü¥O°õ¦æ¦¨¥\·|ªð¦^¦¹«H®§)
354 ¶}©lµo°e¼Æ¾Ú¡Aµ²§ô¥H .(DATA«ü¥O°õ¦æ¦¨¥\·|ªð¦^¦¹«H®§¡A«È¤áºÝÀ³µo°e«H®§)
500 »yªk¿ù»~¡A©R¥O¤£¯àÃѧO
550 ©R¥O¤£¯à°õ¦æ¡A¶l½cµL®Ä
552 ¤¤Â_³B²z¡J¥Î¤á¶W¥X¤å¥óªÅ¶¡
¡@¡@¤U±µ¹¥X¤@Ó²³æªº©R¥OÀY(³o¬O¦b¥´¶}socket¤§«á°µªº)¡A¬O§Ú¦Vstmp.263.netµo¶l¥óªº´ú¸Õµ²ªG¡J
HELO limodou
250 smtp.263.net
MAIL FROM:
chatme@263.net 250 Ok
RCPT TO:
chatme@263.net 250 Ok
DATA
354 End data with .
To:
chatme@263.net From:
chatme@263.net Subject: test
From:
chatme@263.net test
.
QUIT
250 Ok: queued as C46411C5097E0
¡@¡@³o´N¬O¤@¨ÇSMTPªºÂ²³æª¾ÃÑ¡C¬ÛÃö¤º®e¥i¥H¬d¾\RFC¡C
RFC 821©w¸q¤F¦¬/µo¹q¤l¶l¥óªº¬ÛÃö«ü¥O¡C
RFC 822«h¨î©w¤F¶l¥ó€€®eªº®æ¦¡¡C
RFC 2045-2048¨î©w¤F¦h´CÅé¶l¥ó€€®eªº®æ¦¡¡A
RFC 1113, 1422-1424«h¬O°Q½×¦p¦ó¼W¶i¹q¤l¶l¥óªº«O±K©Ê¡C