易語(yǔ)言發(fā)信寫(xiě)法講解
眾所周知,易語(yǔ)言支持庫(kù)自帶"連接發(fā)信服務(wù)器()","斷開(kāi)發(fā)信服務(wù)器()"命令...
但經(jīng)過(guò)實(shí)踐應(yīng)用,連接與斷開(kāi)存在不穩(wěn)定因素,目前暫不得知原由..會(huì)導(dǎo)致發(fā)信25端口占用卡住,最終切斷全部網(wǎng)絡(luò)連接..
經(jīng)過(guò)查閱資料,得出另外一種發(fā)信方式,其原理是用客戶(hù)組件,連接smtp服務(wù)器,一步一步判斷返回值并發(fā)送數(shù)據(jù)..具體參看源碼!
.版本 2
.支持庫(kù) shell
.支持庫(kù) spec
.子程序 發(fā)送郵件通知
.參數(shù) 主題內(nèi)容, 文本型
.局部變量 返回?cái)?shù)據(jù), 文本型
客戶(hù)1.連接 (smtp, 25)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “220”)
斷開(kāi) ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“EHLO ” + smtp + #換行符) ' 服務(wù)器地址
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “250”)
斷開(kāi) ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“auth login” + #換行符)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “334”)
斷開(kāi) ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (BASE64編碼 (到字節(jié)集 (id)) + #換行符) ' 郵箱賬號(hào)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “334”)
斷開(kāi) ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (BASE64編碼 (到字節(jié)集 (password)) + #換行符) ' 密碼
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “235”)
斷開(kāi) ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“MAIL FROM: ” + “<” + id + “>” + #換行符) ' 發(fā)件人
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “250”)
斷開(kāi) ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“RCPT TO: ” + “<” + email + “>” + #換行符) ' 收件人
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “250”)
斷開(kāi) ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“DATA” + #換行符)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “354”)
斷開(kāi) ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“Subject: ” + 主題內(nèi)容 + #換行符) ' 主題
發(fā)送字符 (“From:” + “<” + id + “>” + #換行符)
發(fā)送字符 (“To:” + “<” + email + “>” + #換行符)
發(fā)送字符 (#換行符)
發(fā)送字符 (主題內(nèi)容 + #換行符) ' 正文
發(fā)送字符 (#換行符 + “.” + #換行符)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “250”)
信息框 (“發(fā)送失敗”, 0, )
.如果真結(jié)束
斷開(kāi) ()
.子程序 _客戶(hù)1_數(shù)據(jù)到達(dá)
數(shù)據(jù) = 客戶(hù)1.取回?cái)?shù)據(jù) ()
.子程序 等待數(shù)據(jù), 字節(jié)集
.局部變量 數(shù)據(jù)_, 字節(jié)集
.循環(huán)判斷首 ()
處理事件 ()
.循環(huán)判斷尾 (數(shù)據(jù) = { })
數(shù)據(jù)_ = 數(shù)據(jù)
數(shù)據(jù) = { }
調(diào)試輸出 (到文本 (數(shù)據(jù)_))
返回 (數(shù)據(jù)_)
.子程序 _客戶(hù)1_連接斷開(kāi)
調(diào)試輸出 (“連接斷開(kāi)” + #換行符)
.子程序 發(fā)送字符
.參數(shù) 字符, 文本型
.局部變量 i, 整數(shù)型
調(diào)試輸出 (字符)
.計(jì)次循環(huán)首 (取文本長(zhǎng)度 (字符), i)
客戶(hù)1.發(fā)送數(shù)據(jù) (到字節(jié)集 (字符 (取代碼 (字符, i))))
.計(jì)次循環(huán)尾 ()
.子程序 斷開(kāi)
發(fā)送字符 (“quit” + #換行符)
客戶(hù)1.斷開(kāi)連接 ()
.子程序 BASE64編碼, 文本型
.參數(shù) 待編碼數(shù)據(jù), 字節(jié)集, , 待編碼字節(jié)集
.局部變量 余數(shù)
.局部變量 臨時(shí), 字節(jié)型, , "3"
.局部變量 變量
.局部變量 集合, 字節(jié)集
.局部變量 長(zhǎng)度, 整數(shù)型
.局部變量 字符, 字節(jié)集
.局部變量 i
長(zhǎng)度 = 取字節(jié)集長(zhǎng)度 (待編碼數(shù)據(jù))
.如果真 (長(zhǎng)度 < 1)
返回 (“”)
.如果真結(jié)束
余數(shù) = 長(zhǎng)度 % 3
.如果真 (余數(shù) > 0)
待編碼數(shù)據(jù) = 待編碼數(shù)據(jù) + 取空白字節(jié)集 (3 - 余數(shù))
.如果真結(jié)束
長(zhǎng)度 = 取字節(jié)集長(zhǎng)度 (待編碼數(shù)據(jù))
字符 = 取空白字節(jié)集 (長(zhǎng)度 × 4 ÷ 3)
i = 1
集合 = 到字節(jié)集 (“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”)
.變量循環(huán)首 (1, 長(zhǎng)度, 3, 變量)
臨時(shí) [1] = 待編碼數(shù)據(jù) [變量]
臨時(shí) [2] = 待編碼數(shù)據(jù) [變量 + 1]
臨時(shí) [3] = 待編碼數(shù)據(jù) [變量 + 2]
字符 [i] = 集合 [右移 (臨時(shí) [1], 2) + 1]
字符 [i + 1] = 集合 [左移 (位與 (臨時(shí) [1], 3), 4) + 右移 (臨時(shí) [2], 4) + 1]
字符 [i + 2] = 集合 [左移 (位與 (臨時(shí) [2], 15), 2) + 右移 (臨時(shí) [3], 6) + 1]
字符 [i + 3] = 集合 [位與 (臨時(shí) [3], 63) + 1]
i = i + 4
.變量循環(huán)尾 ()
.如果真 (余數(shù) > 0)
長(zhǎng)度 = 取字節(jié)集長(zhǎng)度 (字符)
.如果 (余數(shù) = 1)
字符 [長(zhǎng)度 - 1] = 取代碼 (“=”, )
字符 [長(zhǎng)度] = 取代碼 (“=”, )
.否則
字符 [長(zhǎng)度] = 取代碼 (“=”, )
.如果結(jié)束
.如果真結(jié)束
返回 (到文本 (字符))
以上就是我們整理的關(guān)于發(fā)送信件寫(xiě)法的全部?jī)?nèi)容,感謝大家對(duì)腳本之家的支持。
相關(guān)文章
易語(yǔ)言取當(dāng)前窗口與用戶(hù)區(qū)高度與寬度的方法
今天小編就為大家分享一篇關(guān)于易語(yǔ)言取當(dāng)前窗口與用戶(hù)區(qū)高度與寬度的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-11-11
易語(yǔ)言數(shù)據(jù)庫(kù)操作“取字段數(shù)”命令
在本篇文章里小編給大家分享的是關(guān)于易語(yǔ)言數(shù)據(jù)庫(kù)操作“取字段數(shù)”命令的詳解內(nèi)容,需要的朋友們可以參考下。2020-04-04
易語(yǔ)言設(shè)置在月歷框架內(nèi)是否顯示今天的日期
今天小編就為大家分享一篇關(guān)于易語(yǔ)言設(shè)置在月歷框架內(nèi)是否顯示今天的日期,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-11-11
易語(yǔ)言枚舉進(jìn)程通過(guò)窗口句柄獲取已經(jīng)登錄的QQ號(hào)碼
今天小編就為大家分享一篇關(guān)于易語(yǔ)言枚舉進(jìn)程通過(guò)窗口句柄獲取已經(jīng)登錄的QQ號(hào)碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-11-11
易語(yǔ)言修改指定網(wǎng)頁(yè)為瀏覽器主頁(yè)的代碼
今天小編就為大家分享一篇關(guān)于易語(yǔ)言修改指定網(wǎng)頁(yè)為瀏覽器主頁(yè)的代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-11-11
易語(yǔ)言實(shí)現(xiàn)無(wú)需加好友強(qiáng)制查看QQ資料卡片的方法
今天小編就為大家分享一篇關(guān)于易語(yǔ)言實(shí)現(xiàn)無(wú)需加好友強(qiáng)制查看QQ資料卡片的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-11-11

