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

