LECMS怎么配置SMTP邮件发送
照着做完,你就能让 LECMS 通过第三方邮箱(QQ 邮箱、163、企业邮箱)正常发出注册验证、找回密码、投稿通知这类邮件,而不是卡在 mail() 函数发不出去。
LECMS 是基于 ThinkPHP 的 PHP 建站程序,默认走的是 PHP 自带的 mail() 函数,在没有本地邮件服务的服务器上基本发不出去,所以必须改成 SMTP 方式走外部邮箱服务器。下面按步骤来。
第一步:先拿到一组 SMTP 账号信息
这一步要拿到 5 个参数:SMTP 服务器地址、端口、加密方式、发件邮箱、授权码。没有它们,后台填什么都白搭。
以 QQ 邮箱为例:登录网页版邮箱 → 顶部「设置」→「账户」→ 下拉到「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务」→ 把「IMAP/SMTP服务」后面的开关打开 → 按提示用绑定手机发送验证短信 → 页面会给出一串 16 位授权码,复制保存,它只显示一次。
对应参数:
- SMTP 服务器:
smtp.qq.com - 端口:
465(SSL)或587(STARTTLS) - 加密方式:SSL
- 发件邮箱:你的完整 QQ 邮箱地址
- 密码:填那串 16 位授权码,不是 QQ 登录密码
163 邮箱同理,服务器是 smtp.163.com,端口 465(SSL)或 994。
注意:授权码不要填成邮箱登录密码,这是新手第一大坑,报错一定是
535 Authentication failed。
第二步:登录后台找到邮件配置入口
这一步要定位后台的邮件设置页面。浏览器打开 http://你的域名/admin.php,输入管理员账号密码登录。
在左侧菜单里依次点:系统 → 系统设置,在打开的页面顶部标签页里找「邮件设置」或「邮箱配置」这一项。部分 LECMS 版本放在「扩展 → 邮件配置」下。如果标签页太多找不到,直接在后台顶部搜索框输入「邮件」回车。
注意:不同汉化版/二次开发版的菜单名会有差异,但关键词一定是「邮件」「SMTP」「邮箱」三者之一。如果你的后台确实没有这个页面,直接跳到第五步。
第三步:按表单逐项填写
这一步把所有参数填进去并保存。典型字段对照如下:
| 字段名 | 填什么 |
|---|---|
| 邮件发送方式 / 驱动 | 选择 SMTP |
| SMTP 服务器 | smtp.qq.com |
| SMTP 端口 | 465 |
| 加密方式 / SMTP 安全协议 | SSL |
| 发件人邮箱 / SMTP 用户名 | xxx@qq.com |
| 发件人密码 / SMTP 密码 | 第一步拿到的 16 位授权码 |
| 发件人名称 | 你的站点名,收件人看到的名字 |
| 测试收件邮箱 | 你自己的另一个邮箱 |
填完点页面底部的「提交」或「保存」按钮。
注意:端口和加密方式必须配对,465 配 SSL、587 配 STARTTLS,错配会连接超时。
第四步:点「发送测试邮件」验证
这一步确认配置真的通了。在同一个页面找「发送测试邮件」按钮,点一下,然后去测试收件箱查看,同时检查垃圾邮件文件夹。
收到邮件说明配置成功,可以开始用注册验证、密码找回等功能了。收不到就进第五步。
第五步:后台没入口或测试失败时,改配置文件
这一步用代码方式兜底。用 FTP 或面板文件管理器进入站点根目录,找 config/ 或 application/database.php 同级的配置文件,LECMS 常见位置是 config/email.php 或 application/extra/email.php,里面通常是这样的数组:
return [
'driver' => 'smtp',
'host' => 'smtp.qq.com',
'port' => 465,
'encryption' => 'ssl',
'username' => 'xxx@qq.com',
'password' => '你的16位授权码',
'from' => ['xxx@qq.com', '站点名称'],
];
没有这个文件就在根目录新建一个 smtp_test.php 做连通性测试:
<?php
$fp = fsockopen('ssl://smtp.qq.com', 465, $errno, $errstr, 10);
echo $fp ? '端口连通正常' : "连接失败: $errstr ($errno)";
浏览器访问 http://你的域名/smtp_test.php,显示「端口连通正常」说明服务器到邮箱的链路没问题,问题出在账号密码;显示失败就是服务器把端口封了,换 587 试试。
注意:测试文件用完立刻删掉,避免暴露服务器信息。
第六步:几个高频报错的对应处理
535 Authentication failed:授权码错了,或者没开启 SMTP 服务,重新生成一次授权码。Connection timed out:云服务器(阿里云、腾讯云)默认封禁 25 端口,把端口改成 465。SSL operation failed:PHP 的openssl扩展没开。宝塔面板在「软件商店 → PHP 7.x → 设置 → 安装扩展」里勾选openssl后重启 PHP。- 邮件进垃圾箱:给自己的域名加 SPF 记录,在 DNS 解析里添加一条 TXT,值为
v=spf1 include:qq.com ~all(用企业邮箱就换成对应厂商的 include 值)。
小结
- 核心是拿到邮箱的 16 位授权码,不是登录密码。
- 端口和加密方式必须配对:465 配 SSL,587 配 STARTTLS。
- 后台路径是「系统 → 系统设置 → 邮件设置」,没有就走配置文件。
- 云服务器基本都封 25 端口,无脑选 465 最稳。
- 测完记得删掉临时测试文件,收不到邮件先翻垃圾箱。
原文链接:https://www.gj0.com/thread-955.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。