子程序名 | 返回值类型 | 公开 | 备 注 | ||||
间隔几个字符就换行 | 文本型 | ||||||
参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
数据 | 文本型 | 间隔字符数 | 整数型 |
变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
返回数组 | 文本型 | 0 | ||||
成员数 | 整数型 | |||||
n | 整数型 | |||||
临时文本 | 文本型 | |||||
计次 | 整数型 |
为什么需要改进邮件发送模块?
在开发需要支持 SSL 加密的邮件发送功能时,我尝试使用以下源码:
https://www.eyuyan.la/post/15472.html
但源码存在以下问题:
ATT00001
的空文件(大小:0 B)。这是由于源码中 MIME 边界行的重复定义,导致 Outlook 解析错误。 解决方案与优化成果
新增子程序:间隔几个字符就换行
源码实现:
.版本 2
.子程序 间隔几个字符就换行, 文本型
.参数 数据, 文本型
.参数 间隔字符数, 整数型
.局部变量 返回数组, 文本型, , "0"
.局部变量 成员数, 整数型
.局部变量 n, 整数型
.局部变量 临时文本, 文本型
.局部变量 计次, 整数型
成员数 = 文本_逐字分割 (数据, 返回数组)
.计次循环首 (成员数, n)
临时文本 = 临时文本 + 返回数组 [zxsq-anti-bbcode-n]
计次 = 计次 + 1
.如果真 (计次 = 间隔字符数)
计次 = 0
临时文本 = 临时文本 + #换行符
.如果真结束
.计次循环尾 ()
返回 (临时文本)
修改内容说明
修复 MIME 边界重复问题
--Separator
,这会导致 MIME 边界定义不正确,生成邮件时可能导致附加文件异常。 --Separator--
,以正确标记 MIME 结束。删除冗余的 Content-ID
字段
Content-ID
字段,但在非嵌入式内容的情况下,Content-ID
是多余的。 新增换行处理
编码_BASE64编码
方法对附件内容进行编码,但未处理 SMTP 协议要求的每行 76 字符的换行规则。 间隔几个字符就换行
,对 Base64 编码后的内容进行格式化处理,从而符合协议要求。优化附件的 MIME 封闭行
--Separator--
,明确标识 MIME 消息结束位置。具体修改后的代码分析
以下是关键改动的解释:
原代码:
Header = Header + “--” + Separator + #换行符
修改后:
' Header = Header + “--” + Separator + #换行符
原代码:
Header = Header + 编码_BASE64编码 (Att_ [zxsq-anti-bbcode-i].Body)
修改后:
Header = Header + 编码_BASE64编码 (到字节集 (间隔几个字符就换行 (到文本 (Att_ [zxsq-anti-bbcode-i].Body), 76))) + #换行符
间隔几个字符就换行
,将编码后的附件内容格式化为符合 SMTP 要求的每行 76 字符的规范格式。原代码:
Header = Header + “--” + Separator + #换行符
修改后:
Header = Header + “--” + Separator + “--” + #换行符
--Separator--
,以符合 MIME 协议规范,确保邮件内容完整。整体改进效果
ATT00001
。 cunanhai 发表于 2025-1-1 14:38
我从QQ安装目录复制出来ssleay32.dll,放到源码同目录 他说 --------------------------- 错误 ----------- ...
cunanhai 发表于 2025-1-1 14:38
我从QQ安装目录复制出来ssleay32.dll,放到源码同目录 他说 --------------------------- 错误 ----------- ...
gytxtx 发表于 2025-1-1 14:39
从网上下载一个试试
欢迎光临 精易论坛 (https://125.confly.eu.org/) | Powered by Discuz! X3.4 |