日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mailcore(一)

發布時間:2023/12/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mailcore(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先簡單了解下pop3和smtp協議:

? ? ? ?pop3協議規定了郵件客戶端與pop3服務器之間的通信規則。一共定義了12條pop3命令供郵件客戶端來檢索和獲取電子郵箱中的郵件信息。下面簡單描述下這些命令( <SP>代表空格,<CRLF>代表回車和換行)。

? ? ? ?user<SP>username<CRLF> ?郵件客戶端與pop3服務器建立連接后的第一條命令,向服務器通知帳 戶名,不過,貌似任意用戶名,服務器都會返回+OK。

? ? ? ?pass<SP>password<CRLF> ?用于向服務器傳遞密碼。

? ? ? ?apop<SP>name,digest<CRLF> 用于替換user和pass命令,以md5數字摘要的形式向pop3郵件服務器提交帳戶密碼。

? ? ? ?stat<CRLF> ? ?查詢郵箱中的統計信息,+OK 21 5678952

? ? ? ?uidl<SP>index<CRLF> ? ?查詢第index封郵件的唯一標識號,+OK 562481

? ? ? ?list<SP>(index)<CRLF> ?查詢第index或所有郵件的信息,返回郵件index size的信息。

? ? ? ?retr<SP>index<CRLF> ? ? ?獲取指定index郵件的全部信息。整封完整郵件。

? ? ? ?dele<SP>index<CRLF> ? ?給第index封郵件設置刪除標識。

? ? ? ?rset<CRLF> ? 清除所有郵件的刪除標識。

? ? ? ?top<SP>index<SP>n<CRLF> ?獲取第index封郵件的郵件頭+n行郵件體的信息。

? ? ? ?noop<CRLF> ?檢測pop3客戶端與pop3服務器的連接情況。

? ? ? ?quit<CRLF> ?結束郵件接收過程。


? ?mailcore2與pop3協議相關的API:

? ? ? ?MCOPOPSession封裝了pop3客戶端與pop3服務器之間的通訊底層細節。

- (MCOPOPOperation *)checkAccountOperation 封裝了命令user和pass,完成向郵件服務器進行認證的過程

- (MCOPOPOperation *)deleteMessagesOperationWithIndexes:(MCOIndexSet *)indexes 封裝了命令dele,給郵件設置刪除標識。

- (MCOPOPOperation *)disconnectOperation 封裝了命令quit,結束郵件接收過程。

? ? ?- (MCOPOPFetchHeaderOperation *)fetchHeaderOperationWithIndex:(unsigned int)index 封裝了命令top,n=0的情況。

? ? ?- (MCOPOPFetchMessageOperation *)fetchMessageOperationWithIndex:(unsigned int)index 封裝了命令retr,獲取指定郵件的全部信息。

- (MCOPOPFetchMessagesOperation *)fetchMessagesOperation 封裝了命令stat,list和uidl,返回所有郵件的index,size,和uidl信息。


? ?smtp協議規定了郵件客戶端與smtp服務器之間,以及兩臺smtp服務器之間的通訊規則。雖然smtp協議一共定義了18條命令,但是通常只需用到其中的6條命令,

? ?ehlo<SP>domain<CRLF> domain表示郵件發送者的主機名。郵件服務器返回的信息中包含支持的auth方式。

? ?auth<SP>(para)<CRLF> 指定認證方式。接下來要輸入base64編碼的username和pwd了。

? ?mail<SP>FROM:address<CRLF> 指定發件人的郵箱地址

? ?rept<SP>TO:address<CRLF> 指定收件人的郵箱地址

? ?data<CRLF> 表示數據區域開始,這個命令后面的所有內容都將被當成郵件內容,直到遇到"<CRLF>.<CRLF>",則表示郵件內容結束。

? ?quit<CRLF> 結束會話。

? ?mailcore2與smtp協議相關的api:

? ? ? ?MCOSMTPSession 封裝了郵件客戶端與smtp服務器之間的通訊規則:

- (MCOSMTPOperation *)checkAccountOperationWithFrom:(MCOAddress *)from 封裝了ehlo與auth命令,完成與smtp服務器的認證。

- (MCOSMTPSendOperation *)sendOperationWithData:(NSData *)messageData 封裝了data命令,messagedata就是data命令后面的內容。收件人信息從messageData中提取。

- (MCOSMTPSendOperation *)sendOperationWithData:(NSData *)messageData from:(MCOAddress *)from recipients:(NSArray *)recipients 封裝了data命令,指定收件人。


? ?接下來就是關于郵件內容的解析了,首先得了解郵件的格式。

? ?郵件內容的基本格式和細節由RFC822文檔和MIME協議定義。

? ?RFC郵件格式包含郵件頭和郵件體兩個主要的部分,郵件體部分只能表述一段普通的文本,無法表達圖片等二進制數據,且當收到“.”符號的單行時,“<CRLF>.<CRLF> ”后面的數據會被丟棄掉。

? ?但是可以通過某種編碼方式將二進制數據編碼成可打印的ascii字符后再作為RFC822格式的內容。郵件閱讀程序收到這種郵件后解碼成二進制數據。這樣就巧妙的用RFC格式文檔傳遞二進制數據了。

? ?但是郵件閱讀程序必須知道二進制數據編碼成ascii的編碼方式以及這些二進制數據在郵件內容中的起始位置。這些問題催生了mime協議的誕生,mime定義了如何在郵件體部分表達出豐富多樣的數據內容。

? ?MIME郵件就是采用了MIME協議的郵件,它新增了一些自己的頭字段,MIME-version指定mime的版本,content-type指定郵件體的mime類型及每段的分隔符,解決了二進制數據在郵件內容中的起始位置問題,content-transfer-encoding告知郵件閱讀程序二進制數據編碼方法。

? ?MIME郵件由mime消息組成。mime消息也包含頭和體兩部分,頭和體之間用空格分開,多個mime消息體之間采用某種分隔符標識進行分隔,它們之間的組合類型和分隔符標識由它門的組合mime消息的頭來描述。

? ?mime消息頭:

? ? ? 1.content-type ? ?字段內容以“主類型/子類型;boundarty="分隔符”的形式出現。主類型:text,image,multipart等,multipart主類型表示mime組合消息。mime組合消息有三種組合關系:混合,關聯,選擇,混合(multipart/mixed)表示消息體中有文本,附件等組成。關聯(multipart/related)表示關聯組合類型,如html代碼內嵌引用的圖片等資源。選擇類型(multipart/alternative)表示該郵件內容既可以用純文本表示,也可以用html格式表示,如果郵件閱讀程序不支持html文本的話,就可以用純文本表示。

? ? 2.content-transfer-encoding ? ? 表示二進制內容編碼的方式。

? ?3.content-disposition ? ? 指定郵件閱讀程序處理數據內容的方式。inline直接處理,attachment當附件處理,

? ?4.content-ID ? ?出現在消息類型為"multipart/related"組合消息內,表示該消息的一個唯一標識號,該標識號會在html格式正文中被引用,content-id:451265.jpg,則html正文中的引用方式為:<img src=“cid:451265.jpg” >

? ?5.content-location ? ?為內嵌資源設置一個URI地址,html正文中可以直接使用該地址。

? ?6.content-base,為內嵌資源設置一個基準路徑。


總結

以上是生活随笔為你收集整理的mailcore(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。