易语言发信写法讲解

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

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

.如果真结束
返回 (到文本 (字符))

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

(0)

相关推荐

  • 图文详解易语言发信问题

    很多人说易语言为什么使用QQ发信时会失败呢,本经验将为你解答 1.打开易语言,写如下代码 1.开启服务 然后打开QQ邮箱 2.点击"设置" 3.点击"帐户" 4.选择SMTP服务并开启 5.保存更改

  • 易语言发信写法讲解

    众所周知,易语言支持库自带"连接发信服务器()","断开发信服务器()"命令... 但经过实践应用,连接与断开存在不稳定因素,目前暂不得知原由..会导致发信25端口占用卡住,最终切断全部网络连接.. 经过查阅资料,得出另外一种发信方式,其原理是用客户组件,连接smtp服务器,一步一步判断返回值并发送数据..具体参看源码! .版本 2 .支持库 shell .支持库 spec .子程序 发送邮件通知 .参数 主题内容, 文本型 .局部变量 返回数据, 文本型 客户1.

  • 易语言实现远程控制讲解

    易语言怎么远程控制?使用易语言玩编程的没有去玩过远程控制,都不好意思说自己玩过编程,网络上有很多琳琅满目的远程控制,下载来使用可以恶搞下自己的朋友,但是必须要自己的朋友信任你才会下载,因为现在的杀毒软件会进行拦截报毒.而且有的时候得不偿失,中了后门,还被反搞!是不是很让人生气? 那么怎么才能自己做一个远程控制呢?首先你需要易语言入门,如果你是个连易语言都不知道是什么的小白,那个先去看看初级教程等教程.现在来说下怎么进行代码编写,需要用到2个组建,一个是服务端组建,还有一个是客户端组建.还需要创建

  • 实例讲解易语言合并整数

    易语言=合并整数-实例讲解,位运算,希望能帮到大家. 1.易语言新建一个windows窗口点击进入代码编辑区具体看如何用易语言编写自己第一个程序?易语言新建一个windows窗口点击进入代码编辑区具体看如何用易语言编写自己第一个程序? 2.我们输入 合并整数()这个函数 3.展开这个函数我们发现 这个函数有2个参数 这个函数的意思比较复杂,需要懂点位的低/高16位知识 把第一个整数的低16位放到合并整数的低16位 把第二个整数的低16位放到合并整数的高16位 合并返回这个整数 4.我们是输入 合

  • 易语言关于右移知识点讲解

    易语言-右移-实例讲解,位运算,希望能帮到大家. 1.易语言新建一个windows窗口 点击进入代码编辑区 具体看如何用易语言编写自己第一个程序? 2.我们输入 右移()这个函数 3.我们展开这个函数发现 这个函数有2个参数 这个函数意思是将某整数的数据位右移指定位数 4.我们输入 3,1 意思是将3的数据位右移1位 5.我们使用调试输出这个函数 输入调试输出 (右移 (3, 1))  具体看易语言调试输出函数实例详解 结果为1 6.投票.点赞,看下图红色标记 总结:以上就是关于易语言右移相关的

  • 易语言破解软件时的按钮断点事件处理方法

    按钮事件断点时 断在时钟的处理方法,新人看看比较好,按钮事件断点断在时钟是很常见的事情.(主要针对易语言程序来讲解) 1.首先载入程序 2.按ALT+M,搜索FF 55 FC 5F 5E 89 5D F4(这个是易语言按钮事件特征码) 3.会弹出这个 4.然后按这个搜索418E5D 5. 在这下段,3秒内会断在时钟,然后在堆栈窗口向上翻,出现"时钟",在时钟后面第二个那里按"反汇编窗口中跟随", 6.反汇编窗口就会来到这里,然后把开头第一行给retn了,如图所示 7

  • 易语言位取反操作详解

    易语言位取反实例讲解,这个是位运算,希望能帮上大家. 1.易语言新建一个windows窗口 点击进入代码编辑区 具体可以看看如何用易语言编写自己第一个程序? 2.我们输入位取反() 这个格式和中文差不多 3.我们展开这个函数看看 只有一个参数 4.这个参数是一个数值 是整数型 我们输入3 5.我们使用调试输出这个函数 具体可以看看易语言调试输出函数实例详解 我们输入调试输出(位取反 (3)) 6.运行结果为-4 它是把3用位表示然后取反,再换算成的数值

  • 易语言近似等于详解用法

    易语言近似等于实例讲解,希望能帮到大家. 希望能按照下面做增加我的收入: 1.最重要的是:在底部点击相关按钮,给我投票和点赞 2.请在网络上帮忙分享此篇经验 3.有心得体会或者疑问,点击相应按钮反馈 4.具体操作请看图 1.易语言新建一个windows窗口 点击进入代码编辑区 2.我们输入近似等于 在下拉列表里选择它 3.这个有需要前后输入2个值 4.我们前面输入 "1" 5.我们后面输入 "2" 6.最后我们利用调试输出这个函数 我们输入下图所示 7.运行看看结果

  • 实例讲解易语言复制数组

    易语言复制数组实例详解,数组操作,实例讲解,希望能帮到大家. 1.易语言新建一个windows窗口 点击进入代码编辑区 具体看如何用易语言编写自己第一个程序? 2.我们首先定义2个数组 分别是a和b 3.我们首先给b[1]赋值我们输入b[1]="0"针对赋值的操作可以看 易语言连续赋值我们首先给b[1]赋值我们输入b[1]="0"针对赋值的操作可以看 易语言连续赋值 4.我们输入这个函数 输入复制数组 (a, b) 意思就是把b复制到a 5.我们我们使用调试输出 我

  • 易语言声明变量的步骤讲解

    易语言教程入门之变量学习变量是什么 1.变量就是一个容器一个仓库,存放程序中的结果,或读取的数据等,这些是基本的概念,变量就是一个容器一个仓库,存放程序中的结果,或读取的数据等,这些是基本的概念, 2.下面我们来一个小程序来实际操作一下 我们先要声明一个变量(就是增加一个变量),先新建一个win窗口程序,在里面画一个按钮,进入代码编辑区,在_按钮1_被单击里面按ctrl+l 3.然后在变量名下面输入一个变量名,这里啰嗦一下,在很多编程语言教程里面,老师总是把变量名的命名规则说半天的,这里我只想说

随机推荐