在PHP中用Socket發(fā)送電子郵件(三)
Jun 21, 2016 am 09:14 AM郵件發(fā)送處理
下面是真正的秘密了,可要看仔細(xì)了。:)
--------------------------------------------------------------------------------
1 function send( $to,$from,$subject,$message)
2 {
3
4 //連接服務(wù)器
5 $this->lastact="connect";
6
7 $this->show_debug("Connect to SMTP server : ".$this->smtp, "out");
8 $this->fp = fsockopen ( $this->smtp, $this->port );
9 if ( $this->fp )
10 {
11
12 set_socket_blocking( $this->fp, true );
13 $this->lastmessage=fgets($this->fp,512);
14 $this->show_debug($this->lastmessage, "in");
15
16 if (! ereg ( "^220", $this->lastmessage ) )
17 {
18 return false;
19 }
20 else
21 {
22 $this->lastact="HELO " . $this->welcome . "\n";
23 if(!$this->do_command($this->lastact, "250"))
24 {
25 fclose($this->fp);
26 return false;
27 }
28
29 $this->lastact="MAIL FROM: $from" . "\n";
30 if(!$this->do_command($this->lastact, "250"))
31 {
32 fclose($this->fp);
33 return false;
34 }
35
36 $this->lastact="RCPT TO: $to" . "\n";
37 if(!$this->do_command($this->lastact, "250"))
38 {
39 fclose($this->fp);
40 return false;
41 }
42
43 //發(fā)送正文
44 $this->lastact="DATA\n";
45 if(!$this->do_command($this->lastact, "354"))
46 {
47 fclose($this->fp);
48 return false;
49 }
50
51 //處理Subject頭
52 $head="Subject: $subject\n";
53 if(!empty($subject) && !ereg($head, $message))
54 {
55 $message = $head.$message;
56 }
57
58 //處理From頭
59 $head="From: $from\n";
60 if(!empty($from) && !ereg($head, $message))
61 {
62 $message = $head.$message;
63 }
64
65 //處理To頭
66 $head="To: $to\n";
67 if(!empty($to) && !ereg($head, $message))
68 {
69 $message = $head.$message;
70 }
71
72 //加上結(jié)束串
73 if(!ereg("\n\.\n", $message))
74 $message .= "\n.\n";
75 $this->show_debug($message, "out");
76 fputs($this->fp, $message);
77
78 $this->lastact="QUIT\n";
79 if(!$this->do_command($this->lastact, "250"))
80 {
81 fclose($this->fp);
82 return false;
83 }
84 }
85 return true;
86 }
87 else
88 {
89 $this->show_debug("Connect failed!", "in");
90 return false;
91 }
92 }
--------------------------------------------------------------------------------
有些意思很清楚的我就不說了。
這個(gè)函數(shù)一共有四個(gè)參數(shù),分別是$to表示收信人,$from表示發(fā)信人,$subject表求郵件主題和$message表示郵件體。如果處理成功則返回true,失敗則返回false。
第8行,連接郵件服務(wù)器,如果成功響應(yīng)碼應(yīng)為220。
第12行,設(shè)置阻塞模式,表示信息必須返回才能繼續(xù)。詳細(xì)說明看手冊吧。
第16行,判斷響應(yīng)碼是否為220,如果是,則繼續(xù)處理,否則出錯(cuò)返回。
第22-27行,處理HELO指令,期望響應(yīng)碼為250。
第29-34行,處理MAIL FROM指令,期望響應(yīng)碼為250。
第36-41行,處理RCPT TO指令,期望響應(yīng)碼為250。
第44-49行,處理DATA指令,期望響應(yīng)碼為354。
第51-76行,生成郵件體,并發(fā)送。
第52-56行,如果$subject不為空,則查找郵件體中是否有主題部分,如果沒有,則加上主題部分。
第59-63行,如果$from不為空,則查找郵件體中是否有發(fā)信人部分,如果沒有,則加上發(fā)信人部分。
第66-70行,如果$to不為空,則查找郵件體中是否有收信人部分,如果沒有,則加上收信人部分。
第73-74行,查找郵件體是否有了結(jié)束行,如果沒有則加上郵件體的結(jié)束行(以"."作為單獨(dú)的一行的特殊行)。
第76行,發(fā)送郵件體。
第78-83行,執(zhí)行QUIT結(jié)否與服務(wù)器的連接,期望響應(yīng)碼為250。
第85行,返回處理成功標(biāo)志(true)。
第81-91行,與服務(wù)器連接失敗的處理。
以上為整個(gè)send_mail類的實(shí)現(xiàn),應(yīng)該不是很難的。

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

?? ????? ??? ??? ??? ? Huawei ???? ???? ???. ? ? Huawei GT3pro? GT4? ?? ?? ?? ?????. ? ??? ???? ????? ???? ????. Huawei GT3pro? GT4? ???? ?????? 1. ?? GT4: 46mm? 41mm, ??? ?? ?? + ????? ?? ?? + ???? ?? ?? ????. GT3pro: 46.6mm ? 42.9mm, ??? ???? ?? + ??? ??/??? ?? + ??? ? ????. 2. ??? GT4: ?? Huawei Truseen5.5+ ????? ???? ??? ? ??????. GT3pro: ECG ???, ?? ? ??? ??

Windows 11?? ?? ??? ???? ?? ?? ??? ?? ??? ???? ??? ???? ?? ? ??? ? ? ????. ?? ??? ??? ???? ?? ?? ??? ??? ????. ?? ???? ?? ????. ??? ?? ?? ??? ??? ????. ??? ?? ????: ?? ??? ?? ? ???? ?? ?? ????? ????? ? ????. ??? ??? ????: ???? ?? ????? ?? ??? ??? ? ????. ?? ?? ????? ??: ?? ?? ?? ?? ????? ?? ??? ??? ? ????. ???? ???????. ????? ???? ? ??? ?? ? ??? ??? ? ????. ? ??? ???? ????? ???? ??? ?? ??? ???? ????. 1. Windows ? Microsoft Store ? ????

vue3? ??? ??? ???? ?? element-plus? ?????: vue3+typescript+element-plus1. ??? ?? ?? ? ??? app.config.globalProperties? ?? ??? $message? ?????? Mounted(){( thisasany) $message.success("this.$message");}2. ?? API?? ?? ???? ? ?? ?? props? ?????.

1?: ?? ?? ?? ?? Apple ??? ?? ??: ??? ???? ???? ?? ?? ???? ??? ?????. ??? ??? ??? ?? ?? ?? ?? ????. Apple ??? ????? ?? ????. Apple? ??? ?? ???? ???? AppStore? ??? ????? ?????. ??? ?? ?? Apple? ??? ????? ???? ?????. ??? ?? ??: "AppStore? ??? ? ??" ??? ??? ?? ???? ?? ??? ? ???? ??? ??? ????? ??????. Wi-Fi? ??? ??? ?? ????? ???? ??? ???? ???(?? > ??? > ???? ?? ??? > ??). iOS ??? ???????.

php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出php提交表單通過后,彈出的對(duì)話框怎樣在當(dāng)前頁彈出而不是在空白頁彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code

? ?? Vue ?? ??? ???? ? ??? ? ??? ?? ???? Vue2? ??? ???? ??? ???? ? ?? ??? ???? ?? ?? ???? ??? ??? ????!

iPadOS 17.4? iPad ??? ??? ????? ?? ??? ?? ??? ??? ?? ??? ???? iPad? ?? ????. iPad? ???? ?? ?? ????? ?????? ???? ???. iPadOS 17.4?? ??? ?? ??? ?? ??? ? ?? ?? ?? ??? ?? ??? ????. ? ?? ???? ??? ??? ??? ???? ?? ??? iPad ?? ??? ??? ???? ??? ??? ???? ??? ???? ??? ??? ? ???? ??? ? ??? ?? ????. ??? ??? ??? ?????? ??? ??? ?? ??? ?? ??? ?? ??? ?? ????? ?? ?? ???? ???? ??? ? ????. ?? ??? ??? ??

Watch4pro? gt? ?? ?? ?? ??? ?? ??? ????? ??? ????. ???? ??, ???, ??? ??? ??? ?? ? ?? ??? ??? ??? ??? Watch 4 Pro? ? ??? ? ????. ?? ?? ?? ??? ?? ??? ??? ???? ??? ? ?? ??? ???? ?? GT ???? ? ??? ? ????. ?? ??? ??? ??? ??, ???? ?? ????? ???. ??? ??? ? ??? ? ????, ??? ??? ?? ??? ??? ???? ?? ??? ??? ?? ?? ????.
