黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

郵件協(xié)議 (SMTP,POP3,HTTP)

系統(tǒng) 2658 0
SMTP協(xié)議通訊模型

  SMTP協(xié)議是TCP/IP協(xié)議族中的一員,主要對(duì)如何將電子郵件從發(fā)送方地址傳送到接收方地址,也即是對(duì)傳輸?shù)囊?guī)則做了規(guī)定。SMTP協(xié)議的通信模型并不復(fù)雜,主要工作集中在發(fā)送SMTP和接收SMTP上:首先針對(duì)用戶發(fā)出的郵件請(qǐng)求,由發(fā)送SMTP建立一條連接到接收SMTP的雙工通訊鏈路,這里的接收SMTP是相對(duì)于發(fā)送SMTP而言的,實(shí)際上它既可以是最終的接收者也可以是中間傳送者。發(fā)送SMTP負(fù)責(zé)向接收SMTP發(fā)送SMTP命令,而接收SMTP則負(fù)責(zé)接收并反饋應(yīng)答。可大致用下面的通訊模型示意圖來(lái)表示:
SMTP協(xié)議的命令和應(yīng)答

  從前面的通訊模型可以看出SMTP協(xié)議在發(fā)送SMTP和接收SMTP之間的會(huì)話是靠發(fā)送SMTP的 SMTP命令和接收SMTP反饋的應(yīng)答來(lái)完成的。在通訊鏈路建立后,發(fā)送SMTP發(fā)送MAIL命令指令郵件發(fā)送者,若接收SMTP此時(shí)可以接收郵件則作出OK的應(yīng)答,然后發(fā)送SMTP繼續(xù)發(fā)出RCPT命令以確認(rèn)郵件是否收到,如果接收到就作出OK的應(yīng)答,否則就發(fā)出拒絕接收應(yīng)答,但這并不會(huì)對(duì)整個(gè)郵件操作造成影響。雙方如此反復(fù)多次,直至郵件處理完畢。SMTP協(xié)議共包含10個(gè)SMTP命令,列表如下:

SMTP命令 命令說(shuō)明
HELLO <domain> <CRLF> 識(shí)別發(fā)送方到接收SMTP的一個(gè)HELLO命令
MAIL FROM:<reverse-path><CRLF> <reverse-path>為發(fā)送者地址。此命令告訴接收方一個(gè)新郵件發(fā)送的開(kāi)始,并對(duì)所有的狀態(tài)和緩沖區(qū)進(jìn)行初始化。此命令開(kāi)始一個(gè)郵件傳輸處理,最終完成將郵件數(shù)據(jù)傳送到一個(gè)或多個(gè)郵箱中。
RCPT TO:<forward-path><CRLF> <forward-path>標(biāo)識(shí)各個(gè)郵件接收者的地址
DATA <CRLF>
接收SMTP將把其后的行為看作郵件數(shù)據(jù)去處理,以<CRLF>.<CRLF>標(biāo)識(shí)數(shù)據(jù)的結(jié)尾。
REST <CRLF> 退出/復(fù)位當(dāng)前的郵件傳輸
NOOP <CRLF> 要求接收SMTP僅做OK應(yīng)答。(用于測(cè)試)
QUIT <CRLF> 要求接收SMTP返回一個(gè)OK應(yīng)答并關(guān)閉傳輸。
VRFY <string> <CRLF> 驗(yàn)證指定的郵箱是否存在,由于安全因素,服務(wù)器多禁止此命令。
EXPN <string> <CRLF> 驗(yàn)證給定的郵箱列表是否存在,擴(kuò)充郵箱列表,也常禁止使用。
HELP <CRLF> 查詢服務(wù)器支持什么命令

注:<CRLF>為回車(chē)、換行,ASCII碼分別為13、10(十進(jìn)制)。

SMTP協(xié)議的每一個(gè)命令都會(huì)返回一個(gè)應(yīng)答碼,應(yīng)答碼的每一個(gè)數(shù)字都是有特定含義的,如第一位數(shù)字為2時(shí)表示命令成功;為5表失?。?表沒(méi)有完成。一些較復(fù)雜的郵件程序利用該特點(diǎn),首先檢查應(yīng)答碼的首數(shù)字,并根據(jù)其值來(lái)決定下一步的動(dòng)作。下面將SMTP的應(yīng)答碼列表如下:

應(yīng)答碼 說(shuō)明
501 參數(shù)格式錯(cuò)誤
502 命令不可實(shí)現(xiàn)
503 錯(cuò)誤的命令序列
504 命令參數(shù)不可實(shí)現(xiàn)
211 系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)
214 幫助信息
220 <domain>服務(wù)就緒
221 <domain>服務(wù)關(guān)閉
421 <domain>服務(wù)未就緒,關(guān)閉傳輸信道
250 要求的郵件操作完成
251 用戶非本地,將轉(zhuǎn)發(fā)向<forward-path>
450 要求的郵件操作未完成,郵箱不可用
550 要求的郵件操作未完成,郵箱不可用
451 放棄要求的操作;處理過(guò)程中出錯(cuò)
551 用戶非本地,請(qǐng)嘗試<forward-path>
452 系統(tǒng)存儲(chǔ)不足,要求的操作未執(zhí)行
552 過(guò)量的存儲(chǔ)分配,要求的操作未執(zhí)行
553 郵箱名不可用,要求的操作未執(zhí)行
354 開(kāi)始郵件輸入,以"."結(jié)束
554 操作失敗

SMTP協(xié)議的會(huì)話流程

  在進(jìn)行程序設(shè)計(jì)之前有必要弄清SMTP協(xié)議的會(huì)話流程,其實(shí)前面介紹的內(nèi)容已經(jīng)可以大致勾勒出用SMTP發(fā)送郵件的框架了,對(duì)于一次普通的郵件發(fā)送,其過(guò)程大致為:先建立TCP連接,隨后客戶端發(fā)出HELLO命令以標(biāo)識(shí)發(fā)件人自己的身份,并繼續(xù)由客戶端發(fā)送MAIL命令,如服務(wù)器應(yīng)答為"OK",可繼續(xù)發(fā)送RCPT命令來(lái)標(biāo)識(shí)電子郵件的收件人,在這里可以有多個(gè)RCPT行,而服務(wù)器端則表示是否愿意為收件人接受該郵件。在雙方協(xié)商結(jié)束后,用命令DATA將郵件發(fā)送出去,其中對(duì)表示結(jié)束的"."也一并發(fā)送出去。隨后結(jié)束本次發(fā)送過(guò)程,以QUIT命令退出。下面通過(guò)一個(gè)實(shí)例,從langrui@sohu.com發(fā)送郵件到renping@sina.com來(lái)更詳細(xì)直觀地描述此會(huì)話流程:

R:220 sina.com Simple Mail Transfer Service Ready
S:HELLO sohu.com
R:250 sina.com
S:MAIL FROM:<langrui@sohu.com>
R:250 OK
S:RCPT TO:<renping@sina.com>
R:250 OK
S:DATA
R:354 Start mail input;end with "<CRLF>.<CRLF>"
S:……
R:250 OK
S:QUIT
R:221 sina.com Service closing transmission channel

郵件的格式化

  由于電子郵件結(jié)構(gòu)上的特殊性,在傳輸時(shí)是不能當(dāng)作簡(jiǎn)單的文本來(lái)直接處理的,而必須按照一定的格式對(duì)郵件頭和郵件體進(jìn)行格式化處理之后才可以被發(fā)送。需要進(jìn)行格式化的部分主要有:發(fā)件人地址、收件人地址、主題和發(fā)送日期等。在RFC文檔的RFC 822里對(duì)郵件的格式化有詳盡的說(shuō)明,有關(guān)詳情請(qǐng)參閱該文檔。下面通過(guò)VC++6.0按照RFC 822文檔規(guī)定將格式化郵件的部分編寫(xiě)如下(部分代碼):

//郵件頭準(zhǔn)備
strTemp = _T( "From: " ) + m_strFrom; file://發(fā)件人地址
add_header_line( (LPCTSTR)strTemp );
strTemp = _T( "To: " ) + m_strTo; file://收件人地址
add_header_line( (LPCTSTR)strTemp );
m_tDateTime = m_tDateTime.GetCurrentTime();//發(fā)送時(shí)間
strTemp = _T( "Data: " );
strTemp += m_tDateTime.Format( "%a, %d %b %y %H:%M:%S %Z" );
add_header_line( (LPCTSTR)strTemp );
strTemp = _T( "Subject: " ) + m_strSubject; file://主題
add_header_line( (LPCTSTR)strTemp );
file://郵件頭結(jié)束
m_strHeader += _T( ""r"n" );
file://郵件體準(zhǔn)備
if( m_strBody.Right( 2 ) != _T( ""r"n" ) ) file://確認(rèn)最后以回車(chē)換行結(jié)束
m_strBody += _T( ""r"n" );

其中add_header_line(LPCTSTR szHeaderLine)函數(shù)用于把szHeaderLine指向的字串追加到m_strHeader后面。其中,格式化后的郵件頭保存在m_strHeader里,格式化后的郵件體保存在m_strBody中。

由Socket套接字為SMTP提供網(wǎng)絡(luò)通訊基礎(chǔ)

許多網(wǎng)絡(luò)程序都是采用Socket套接字實(shí)現(xiàn)的,對(duì)于一些標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議如HTTP、FTP和SMTP等協(xié)議的編程也是基于套接字程序的,只是端口號(hào)不再是隨意設(shè)定而要由協(xié)議來(lái)指定,比如HTTP端口在80、FTP是21,而SMTP則是25。Socket只是提供在指定的端口上同指定的服務(wù)器從事網(wǎng)絡(luò)上的通訊能力,至于客戶和服務(wù)器之間是如何通訊的則由網(wǎng)絡(luò)協(xié)議來(lái)規(guī)定,這對(duì)于套接字是完全透明的。因此可以使用Socket套接字為程序提供網(wǎng)絡(luò)通訊的能力,而對(duì)于網(wǎng)絡(luò)通訊連路建立好之后采取什么樣的通訊應(yīng)答則要按SMTP協(xié)議的規(guī)定去執(zhí)行了。Socket套接字網(wǎng)絡(luò)編程方面的文章資料非常豐富,限于本文篇幅,在此不再贅述,有關(guān)詳情請(qǐng)參閱相關(guān)文檔。為簡(jiǎn)便起見(jiàn),沒(méi)有采用編寫(xiě)較復(fù)雜的Windows Sockets API進(jìn)行編程,而是使用經(jīng)過(guò)較好封裝的MFC 的CSocket類(lèi)。在正式使用套接字之前,也要先用AfxSocketInit()函數(shù)對(duì)套接字進(jìn)行初始化,然后用Create()創(chuàng)建套接字對(duì)象,并由該套接字通過(guò)Connect()建立同郵件服務(wù)器的連接。如果一切正常,再后續(xù)的工作中就是遵循SMTP協(xié)議的約定來(lái)使用Send()、Receive()函數(shù)來(lái)發(fā)送SMTP命令和接收郵件服務(wù)器發(fā)來(lái)的應(yīng)答碼以完成對(duì)郵件的傳送。

POP3協(xié)議命令原始碼及工作原理
一 簡(jiǎn)介:
1. POP適用于C/S結(jié)構(gòu)的脫機(jī)模型的電子郵件協(xié)議,目前已發(fā)展到第三版,稱POP3。脫機(jī) 模型即不能在線操作,不像IMAP4(netscape支持IMAP4)
2. 當(dāng)客戶機(jī)與服務(wù)器連接并查詢新電子郵件時(shí),被該客戶機(jī)指定的所有將被下載的郵件 都將被程序下載到客戶機(jī),下載后,電子郵件客戶機(jī)就可以刪除或修改任意郵件,而無(wú)需與電子郵件服務(wù)器進(jìn)一步交互。
3. POP3客戶向POP3服務(wù)器發(fā)送命令并等待響應(yīng),POP3命令采用命令行形式,用ASCII碼 表示。 服務(wù)器響應(yīng)是由一個(gè)單獨(dú)的命令行組成,或多個(gè)命令行組成,響應(yīng)第一行以ASCII文本+ OK或-ERR指出相應(yīng) 的操作狀態(tài)是成功還是失敗
4. 在POP3協(xié)議中有三種狀態(tài),認(rèn)可狀態(tài),處理狀態(tài),和更新?tīng)顟B(tài)。 當(dāng)客戶機(jī)與服務(wù)器建立聯(lián)系時(shí),一旦客戶機(jī)提供了自己身份并成功確認(rèn),即由認(rèn)可狀態(tài)轉(zhuǎn)入處理狀態(tài), 在完成相應(yīng)的操作后客戶機(jī)發(fā)出quit命令,則進(jìn)入更新?tīng)顟B(tài),更新之后最后重返認(rèn)可狀態(tài)。如下圖
等待連接 身份確認(rèn) quit命令
—— |認(rèn)可|————— |處理|——————|更新|
|__________________________________|
重返認(rèn)可狀態(tài)
5. 認(rèn)可狀態(tài)的命令語(yǔ)句
一般情況下,大多數(shù)現(xiàn)有的POP3客戶與服務(wù)器執(zhí)行采用ASCII明文發(fā)送用戶名和口令,在 認(rèn)可狀態(tài)等 待客戶連接的情況下,客戶發(fā)出連接,并由命令user/pass對(duì)在網(wǎng)絡(luò)上發(fā)送明文用戶名和 口令給服務(wù)器
進(jìn)行身份確認(rèn)。一旦確認(rèn)成功,便轉(zhuǎn)入處理狀態(tài)。為了避免發(fā)送明文口令的問(wèn)題,有一種新的認(rèn)證方法,命令為APOP,使用APOP,口令在 傳輸之前被加密。 當(dāng)?shù)谝淮闻c服務(wù)器連接時(shí),POP3服務(wù)器向客戶機(jī)發(fā)送一個(gè)ASCII碼問(wèn)候,這個(gè)問(wèn)候由一串字符組成對(duì)每個(gè)客戶機(jī)是唯一的,與當(dāng)時(shí)的時(shí)間有關(guān),然后,客戶機(jī)把它的純文本口令附加到從服務(wù)器接 收到的字符串之后,然后計(jì)算出結(jié)果字符串的MD5單出函數(shù)消息摘要,客戶機(jī)把用戶名與MD5消息摘要作為APOP命令的參數(shù)一起發(fā)送出去。目前,大多數(shù)windows上的郵件客戶軟件不支持APOP命令,qpopper支持。
6. POP3命令碼如下:
命令 參數(shù) 狀態(tài) 描述
------------------------------------------
USER username 認(rèn)可 此命令與下面的pass命令若成功,將導(dǎo)致?tīng)顟B(tài)轉(zhuǎn)換
PASS password 認(rèn)可
APOP Name,Digest 認(rèn)可 Digest是MD5消息摘要
------------------------------------------
STAT None 處理 請(qǐng)求服務(wù)器發(fā)回關(guān)于郵箱的統(tǒng)計(jì)資料,如郵件總數(shù)和總字節(jié)數(shù)
UIDL [Msg#] 處理 返回郵件的唯一標(biāo)識(shí)符,POP3會(huì)話的每個(gè)標(biāo)識(shí)符都將是唯一的
LIST [Msg#] 處理 返回郵件數(shù)量和每個(gè)郵件的大小
RETR [Msg#] 處理 返回由參數(shù)標(biāo)識(shí)的郵件的全部文本
DELE [Msg#] 處理 服務(wù)器將由參數(shù)標(biāo)識(shí)的郵件標(biāo)記為刪除,由quit命令執(zhí)行
RSET None 處理 服務(wù)器將重置所有標(biāo)記為刪除的郵件,用于撤消DELE命令
TOP [Msg#] 處理 服務(wù)器將返回由參數(shù)標(biāo)識(shí)的郵件前n行內(nèi)容,n必須是正整數(shù)
NOOP None 處理 服務(wù)器返回一個(gè)肯定的響應(yīng)
------------------------------------------
QUIT None 更新
a.客戶機(jī)希望結(jié)束這次會(huì)話
b.如果服務(wù)器處于‘處理’狀態(tài),那么將進(jìn)入‘更新’狀態(tài)以刪除任何標(biāo)記為刪除的郵

c.導(dǎo)致由處理狀態(tài)到更新?tīng)顟B(tài),又重返認(rèn)可狀態(tài)的轉(zhuǎn)變
d.如果這個(gè)命令發(fā)出時(shí)服務(wù)器處于‘認(rèn)可’狀態(tài),則結(jié)束會(huì)話,不進(jìn)行‘更新’狀態(tài)。

7. POP3協(xié)議在TCP/110端口上等待客戶連接請(qǐng)求。
8. 若密碼為明文,我如何監(jiān)聽(tīng)?
下面的命令在服務(wù)器運(yùn)行后在屏幕上顯示POP3連接及命令發(fā)送的過(guò)程:
#sniffit -a -A. -p 110 -b -s 192.169.11.12
note: 192.168.11.12是客戶機(jī)IP地址
你需要事先安裝sniffit這個(gè)端口監(jiān)聽(tīng)程序
9. 考慮這種情況,若客戶在收取郵件時(shí),假定為15封信等待接收,但由于線路問(wèn)題,收
到第10封時(shí)斷線了,
為什么下次收時(shí)仍然從第一封開(kāi)始,也即為什么前10封沒(méi)有被從服務(wù)器上刪除掉?
任何郵件的刪除都必須在quit命令發(fā)出后對(duì)已標(biāo)記為刪除的郵件執(zhí)行刪除操作,由于中
途斷線,仍處于
處理狀態(tài),沒(méi)有機(jī)會(huì)執(zhí)行quit命令以進(jìn)行狀態(tài)轉(zhuǎn)換。
10. pop3 session is locked by another session, please wait 10 minutes then t
ry again.
由于非正常操作引起POP3程序內(nèi)部機(jī)制鎖住該次會(huì)話。
11. Foxmail與OE(outlook express)的處理機(jī)制的不同。
a. 假定服務(wù)器上有三封郵件等待客戶機(jī)接收。用foxmail與OE的不同之處在于
foxmail每收一封標(biāo)記刪除一封,而OE則等全部接收完后再全部標(biāo)記為刪除最后執(zhí)行qui
t命令。
Foxmail OE
-------------------------------
retr 1 retr 1
dele 1 retr 2
retr 2 retr 3
dele 2 dele 1
retr 3 dele 2
dele 3 dele 3
quit quit
b. Foxmail的遠(yuǎn)程郵件管理是非常優(yōu)秀的管理工具,假定服務(wù)器上有三封信,對(duì)第一封
,我們不想接收
想從服務(wù)器直接刪除;對(duì)第二封,想接收但不刪除,對(duì)第三封,這一次不想接收,分別
標(biāo)記后
最后foxmail發(fā)出的命令是
dele 1
retr 2
quit
c. 若沒(méi)有foxmail,正好有幾封很大的信堵住了,我不想接收,想直接刪除它,或者想
查看這兩封是誰(shuí)發(fā)的?
直接在windows的DOS窗口下用命令行操作,如:
# telnet my.isp.net 110
user username
pass password
list

dele 3
dele 5
quit
--



HTTP服務(wù)器與HTTP客戶機(jī)之間的會(huì)話如下:

1客戶機(jī)與服務(wù)器建立聯(lián)系

與服務(wù)器建立連接,就是與SOCKET建立連接,因此要指定機(jī)器名稱、資源名稱和斷口號(hào),可以通過(guò)URL來(lái)提供這些信息。URL的格式為:
HTTP://<IP地址>/[端口號(hào)]/[路徑][?<查詢信息>]
資源的缺省值是INDEX或DEFAULT,斷口號(hào)缺省為80.

2客戶向服務(wù)器提出請(qǐng)求

請(qǐng)求信息包括希望返回的文件名和客戶機(jī)信息.客戶機(jī)信息以請(qǐng)求頭發(fā)送給服務(wù)器,請(qǐng)求頭包括HTTP方法和頭字段.
HTTP方法常用的有GET、HEAD、POST,而PUT、DELETE、LINK、UNLINK方法
許多HTTP服務(wù)器都不使用。

頭字段包括:

。DATE:請(qǐng)求發(fā)送的日期和時(shí)間

。PARGMA:用于向服務(wù)器傳輸與實(shí)現(xiàn)無(wú)關(guān)的信息。這個(gè)字段還用于告訴代理服
務(wù)器,要從實(shí)際服務(wù)器而不是從高速緩存取資源

。FORWARDED:可以用來(lái)追蹤機(jī)器之間,而不是客戶機(jī)和服務(wù)器的消息。這個(gè)字段
可以用來(lái)追蹤在代理服務(wù)器之間的傳遞路由。

。MESSAGE_ID:用于唯一地標(biāo)識(shí)消息

。ACCEPT:通知服務(wù)器客戶所能接受的數(shù)據(jù)類(lèi)型和尺寸。(*/*表示可以接受
所有類(lèi)型的數(shù)據(jù)。

。AOTHORIZATION:向服務(wù)器提供旁路安全保護(hù)和加密機(jī)制,若服務(wù)器
不需要這個(gè)字段,則不提供這個(gè)字段

。FROM:當(dāng)客戶應(yīng)用程序希望想服務(wù)器提供有關(guān)其電子郵件地址時(shí)使用

。IF-MODEFIED-SINCE用于提供條件GET。如果所請(qǐng)求的文檔自從所指定
的日期以來(lái)沒(méi)有發(fā)生變化,則服務(wù)器應(yīng)不發(fā)送該對(duì)象。如果所發(fā)送的日期格式不合
法,或晚于服務(wù)器的日期,服務(wù)器會(huì)忽略該字段

。BEFERRER:向服務(wù)器進(jìn)行資源請(qǐng)求用到的對(duì)象

。MIME-VERTION:用于處理不同類(lèi)型文件的MIME協(xié)議版本號(hào)

。USER-AGENT:有關(guān)發(fā)出請(qǐng)求的客戶信息

3服務(wù)器對(duì)請(qǐng)求作出應(yīng)答

服務(wù)器收到一個(gè)請(qǐng)求,就會(huì)立刻解釋請(qǐng)求中所用到的方法,并開(kāi)始處理應(yīng)答。
服務(wù)器的應(yīng)答消息也包含頭字段形式的報(bào)文信息。

。報(bào)文第一行是狀態(tài)行,格式為<HTTP版本號(hào)><狀態(tài)代碼><解釋短語(yǔ)>

狀態(tài)碼是個(gè)三位數(shù)字碼,分為四類(lèi):

。以2開(kāi)頭,表示請(qǐng)求被成功處理
。以3開(kāi)頭,表示請(qǐng)求被重定向
。以4開(kāi)頭,表示客戶的請(qǐng)求有錯(cuò)
。以5開(kāi)頭,表示服務(wù)器不能滿足請(qǐng)求
解釋短語(yǔ)是對(duì)狀態(tài)碼的解釋。

。報(bào)文還向客戶返回幾個(gè)頭字段,如:
。STATUSCODE/REASONPHRASE
。DATE
。LAST-MODIFIED
。SERVER
。CONTENT_TYPE
。RETRY_AFTER:服務(wù)器太忙時(shí)返回這個(gè)字段
。WWW_AUTHENTICATE:當(dāng)服務(wù)器的安全機(jī)制要求客戶發(fā)送某中授權(quán)信息時(shí)使用該字段

。報(bào)文最后是實(shí)體信息,即客戶請(qǐng)求得到的HTTP服務(wù)器上的資源內(nèi)容。

4關(guān)閉客戶與服務(wù)器之間的連接

郵件協(xié)議 (SMTP,POP3,HTTP)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論