易语言发信写法讲解
众所周知,易语言支持库自带"连接发信服务器()","断开发信服务器()"命令...
但经过实践应用,连接与断开存在不稳定因素,目前暂不得知原由..会导致发信25端口占用卡住,最终切断全部网络连接..
经过查阅资料,得出另外一种发信方式,其原理是用客户组件,连接smtp服务器,一步一步判断返回值并发送数据..具体参看源码!
.版本2 .支持库shell .支持库spec .子程序发送邮件通知 .参数主题内容,文本型 .局部变量返回数据,文本型 客户1.连接(smtp,25) 返回数据=到文本(等待数据()) .如果真(取文本左边(返回数据,3)≠“220”) 断开() 信息框(“发送失败”,0,) 返回() .如果真结束 发送字符(“EHLO”+smtp+#换行符)'服务器地址 返回数据=到文本(等待数据()) .如果真(取文本左边(返回数据,3)≠“250”) 断开() 信息框(“发送失败”,0,) 返回() .如果真结束 发送字符(“authlogin”+#换行符) 返回数据=到文本(等待数据()) .如果真(取文本左边(返回数据,3)≠“334”) 断开() 信息框(“发送失败”,0,) 返回() .如果真结束 发送字符(BASE64编码(到字节集(id))+#换行符)'邮箱账号 返回数据=到文本(等待数据()) .如果真(取文本左边(返回数据,3)≠“334”) 断开() 信息框(“发送失败”,0,) 返回() .如果真结束 发送字符(BASE64编码(到字节集(password))+#换行符)'密码 返回数据=到文本(等待数据()) .如果真(取文本左边(返回数据,3)≠“235”) 断开() 信息框(“发送失败”,0,) 返回() .如果真结束 发送字符(“MAILFROM:”+“<”+id+“>”+#换行符)'发件人 返回数据=到文本(等待数据()) .如果真(取文本左边(返回数据,3)≠“250”) 断开() 信息框(“发送失败”,0,) 返回() .如果真结束 发送字符(“RCPTTO:”+“<”+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]=取代码(“=”,) 字符[长度]=取代码(“=”,) .否则 字符[长度]=取代码(“=”,) .如果结束 .如果真结束 返回(到文本(字符))
以上就是我们整理的关于发送信件写法的全部内容,感谢大家对毛票票的支持。