易语言发信写法讲解

时间:2021-05-19

众所周知,易语言支持库自带"连接发信服务器()","断开发信服务器()"命令...

但经过实践应用,连接与断开存在不稳定因素,目前暂不得知原由..会导致发信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] = 取代码 (“=”, ) 字符 [长度] = 取代码 (“=”, ) .否则 字符 [长度] = 取代码 (“=”, ) .如果结束.如果真结束返回 (到文本 (字符))

以上就是我们整理的关于发送信件写法的全部内容,感谢大家对的支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章