您好,登錄后才能下訂單哦!
小編給大家分享一下易語言如何實現發信,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
眾所周知,易語言支持庫自帶"連接發信服務器()","斷開發信服務器()"命令...
但經過實踐應用,連接與斷開存在不穩定因素,目前暫不得知原由..會導致發信25端口占用卡住,最終切斷全部網絡連接..
經過查閱資料,得出另外一種發信方式,其原理是用客戶組件,連接smtp服務器,一步一步判斷返回值并發送數據..具體參看源碼!
.版本 2 .支持庫 shell .支持庫 spec .子程序 發送郵件通知 .參數 主題內容, 文本型 .局部變量 返回數據, 文本型 客戶1.連接 (smtp, 25) 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “220”) 斷開 () 信息框 (“發送失敗”, 0, ) 返回 () .如果真結束 發送字符 (“EHLO ” + smtp + #換行符) ' 服務器地址 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “250”) 斷開 () 信息框 (“發送失敗”, 0, ) 返回 () .如果真結束 發送字符 (“auth login” + #換行符) 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “334”) 斷開 () 信息框 (“發送失敗”, 0, ) 返回 () .如果真結束 發送字符 (BASE64編碼 (到字節集 (id)) + #換行符) ' 郵箱賬號 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “334”) 斷開 () 信息框 (“發送失敗”, 0, ) 返回 () .如果真結束 發送字符 (BASE64編碼 (到字節集 (password)) + #換行符) ' 密碼 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “235”) 斷開 () 信息框 (“發送失敗”, 0, ) 返回 () .如果真結束 發送字符 (“MAIL FROM: ” + “<” + id + “>” + #換行符) ' 發件人 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “250”) 斷開 () 信息框 (“發送失敗”, 0, ) 返回 () .如果真結束 發送字符 (“RCPT TO: ” + “<” + email + “>” + #換行符) ' 收件人 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “250”) 斷開 () 信息框 (“發送失敗”, 0, ) 返回 () .如果真結束 發送字符 (“DATA” + #換行符) 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “354”) 斷開 () 信息框 (“發送失敗”, 0, ) 返回 () .如果真結束 發送字符 (“Subject: ” + 主題內容 + #換行符) ' 主題 發送字符 (“From:” + “<” + id + “>” + #換行符) 發送字符 (“To:” + “<” + email + “>” + #換行符) 發送字符 (#換行符) 發送字符 (主題內容 + #換行符) ' 正文 發送字符 (#換行符 + “.” + #換行符) 返回數據 = 到文本 (等待數據 ()) .如果真 (取文本左邊 (返回數據, 3) ≠ “250”) 信息框 (“發送失敗”, 0, ) .如果真結束 斷開 () .子程序 _客戶1_數據到達 數據 = 客戶1.取回數據 () .子程序 等待數據, 字節集 .局部變量 數據_, 字節集 .循環判斷首 () 處理事件 () .循環判斷尾 (數據 = { }) 數據_ = 數據 數據 = { } 調試輸出 (到文本 (數據_)) 返回 (數據_) .子程序 _客戶1_連接斷開 調試輸出 (“連接斷開” + #換行符) .子程序 發送字符 .參數 字符, 文本型 .局部變量 i, 整數型 調試輸出 (字符) .計次循環首 (取文本長度 (字符), i) 客戶1.發送數據 (到字節集 (字符 (取代碼 (字符, i)))) .計次循環尾 () .子程序 斷開 發送字符 (“quit” + #換行符) 客戶1.斷開連接 () .子程序 BASE64編碼, 文本型 .參數 待編碼數據, 字節集, , 待編碼字節集 .局部變量 余數 .局部變量 臨時, 字節型, , "3" .局部變量 變量 .局部變量 集合, 字節集 .局部變量 長度, 整數型 .局部變量 字符, 字節集 .局部變量 i 長度 = 取字節集長度 (待編碼數據) .如果真 (長度 < 1) 返回 (“”) .如果真結束 余數 = 長度 % 3 .如果真 (余數 > 0) 待編碼數據 = 待編碼數據 + 取空白字節集 (3 - 余數) .如果真結束 長度 = 取字節集長度 (待編碼數據) 字符 = 取空白字節集 (長度 × 4 ÷ 3) i = 1 集合 = 到字節集 (“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”) .變量循環首 (1, 長度, 3, 變量) 臨時 [1] = 待編碼數據 [變量] 臨時 [2] = 待編碼數據 [變量 + 1] 臨時 [3] = 待編碼數據 [變量 + 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 .變量循環尾 () .如果真 (余數 > 0) 長度 = 取字節集長度 (字符) .如果 (余數 = 1) 字符 [長度 - 1] = 取代碼 (“=”, ) 字符 [長度] = 取代碼 (“=”, ) .否則 字符 [長度] = 取代碼 (“=”, ) .如果結束 .如果真結束 返回 (到文本 (字符))
以上是“易語言如何實現發信”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。