易語言發(fā)信寫法講解
眾所周知,易語言支持庫自帶"連接發(fā)信服務(wù)器()","斷開發(fā)信服務(wù)器()"命令...
但經(jīng)過實(shí)踐應(yīng)用,連接與斷開存在不穩(wěn)定因素,目前暫不得知原由..會(huì)導(dǎo)致發(fā)信25端口占用卡住,最終切斷全部網(wǎng)絡(luò)連接..
經(jīng)過查閱資料,得出另外一種發(fā)信方式,其原理是用客戶組件,連接smtp服務(wù)器,一步一步判斷返回值并發(fā)送數(shù)據(jù)..具體參看源碼!
.版本 2
.支持庫 shell
.支持庫 spec
.子程序 發(fā)送郵件通知
.參數(shù) 主題內(nèi)容, 文本型
.局部變量 返回?cái)?shù)據(jù), 文本型
客戶1.連接 (smtp, 25)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “220”)
斷開 ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“EHLO ” + smtp + #換行符) ' 服務(wù)器地址
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “250”)
斷開 ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“auth login” + #換行符)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “334”)
斷開 ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (BASE64編碼 (到字節(jié)集 (id)) + #換行符) ' 郵箱賬號(hào)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “334”)
斷開 ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (BASE64編碼 (到字節(jié)集 (password)) + #換行符) ' 密碼
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “235”)
斷開 ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“MAIL FROM: ” + “<” + id + “>” + #換行符) ' 發(fā)件人
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “250”)
斷開 ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“RCPT TO: ” + “<” + email + “>” + #換行符) ' 收件人
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “250”)
斷開 ()
信息框 (“發(fā)送失敗”, 0, )
返回 ()
.如果真結(jié)束
發(fā)送字符 (“DATA” + #換行符)
返回?cái)?shù)據(jù) = 到文本 (等待數(shù)據(jù) ())
.如果真 (取文本左邊 (返回?cái)?shù)據(jù), 3) ≠ “354”)
斷開 ()
信息框 (“發(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é)束
斷開 ()
.子程序 _客戶1_數(shù)據(jù)到達(dá)
數(shù)據(jù) = 客戶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ù)_)
.子程序 _客戶1_連接斷開
調(diào)試輸出 (“連接斷開” + #換行符)
.子程序 發(fā)送字符
.參數(shù) 字符, 文本型
.局部變量 i, 整數(shù)型
調(diào)試輸出 (字符)
.計(jì)次循環(huán)首 (取文本長度 (字符), i)
客戶1.發(fā)送數(shù)據(jù) (到字節(jié)集 (字符 (取代碼 (字符, i))))
.計(jì)次循環(huán)尾 ()
.子程序 斷開
發(fā)送字符 (“quit” + #換行符)
客戶1.斷開連接 ()
.子程序 BASE64編碼, 文本型
.參數(shù) 待編碼數(shù)據(jù), 字節(jié)集, , 待編碼字節(jié)集
.局部變量 余數(shù)
.局部變量 臨時(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, 變量)
臨時(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)
長度 = 取字節(jié)集長度 (字符)
.如果 (余數(shù) = 1)
字符 [長度 - 1] = 取代碼 (“=”, )
字符 [長度] = 取代碼 (“=”, )
.否則
字符 [長度] = 取代碼 (“=”, )
.如果結(jié)束
.如果真結(jié)束
返回 (到文本 (字符))
以上就是我們整理的關(guān)于發(fā)送信件寫法的全部?jī)?nèi)容,感謝大家對(duì)腳本之家的支持。
相關(guān)文章
易語言隱藏選擇夾通過現(xiàn)行子夾來顯示和切換指定子夾的內(nèi)容
今天小編就為大家分享一篇關(guān)于易語言隱藏選擇夾通過現(xiàn)行子夾來顯示和切換指定子夾的內(nèi)容,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-11-11
易語言設(shè)置組合框內(nèi)容自動(dòng)排序的方法
今天小編就為大家分享一篇關(guān)于易語言設(shè)置組合框內(nèi)容自動(dòng)排序的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-11-11
零基礎(chǔ)易語言入門教程(四)之?dāng)?shù)據(jù)類型
這篇文章主要介紹了零基礎(chǔ)易語言入門教程(四)之?dāng)?shù)據(jù)類型的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-05-05

