易语言 写php发信,易语言发信写法讲解

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

但经过实践应用,连接与断开存在不稳定因素,目前暂不得知原由..会导致发信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: ” + “” + #换行符) ' 发件人

返回数据 = 到文本 (等待数据 ())

.如果真 (取文本左边 (返回数据, 3) ≠ “250”)

断开 ()

信息框 (“发送失败”, 0, )

返回 ()

.如果真结束

发送字符 (“RCPT TO: ” + “” + #换行符) ' 收件人

返回数据 = 到文本 (等待数据 ())

.如果真 (取文本左边 (返回数据, 3) ≠ “250”)

断开 ()

信息框 (“发送失败”, 0, )

返回 ()

.如果真结束

发送字符 (“DATA” + #换行符)

返回数据 = 到文本 (等待数据 ())

.如果真 (取文本左边 (返回数据, 3) ≠ “354”)

断开 ()

信息框 (“发送失败”, 0, )

返回 ()

.如果真结束

发送字符 (“Subject: ” + 主题内容 + #换行符) ' 主题

发送字符 (“From:” + “” + #换行符)

发送字符 (“To:” + “” + #换行符)

发送字符 (#换行符)

发送字符 (主题内容 + #换行符) ' 正文

发送字符 (#换行符 + “.” + #换行符)

返回数据 = 到文本 (等待数据 ())

.如果真 (取文本左边 (返回数据, 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] = 取代码 (“=”, )

字符 [长度] = 取代码 (“=”, )

.否则

字符 [长度] = 取代码 (“=”, )

.如果结束

.如果真结束

返回 (到文本 (字符))

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值