You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux VPS环境下PHP表单无法发送邮件的配置问题咨询

PHP表单无法发送邮件解决指南

PHP内置的mail()函数本身不具备直接发送邮件的能力,它仅会调用服务器系统层的邮件传输代理(MTA)完成发信操作,你遇到的问题本质是服务器未完成邮件发送相关配置,网上很多教程只放代码是默认演示环境已经提前配置好MTA,自建VPS默认没有对应配置自然无法发信。

1 检查配置服务器MTA服务

目前你的日志只有OpenDKIM启动记录,没有任何邮件投递相关日志,首先确认是否安装了Postfix、Sendmail这类MTA服务:

  • 执行命令检查Postfix运行状态:systemctl status postfix
  • 如果未安装,对应发行版直接安装即可,Debian/Ubuntu系列执行apt install postfix,安装过程选择「Internet Site」,域名填写发信所用的vlfmedia.dk
  • 配置完成后可以先做命令行发信测试:echo "测试邮件内容" | mail -s "测试标题" 你的测试邮箱地址,同时查看/var/log/mail.log获取投递详情

2 配置PHP发信参数

MTA配置正常后,检查对应PHP版本的php.ini文件配置:

  • 找到sendmail_path配置项,修改为sendmail_path = /usr/sbin/sendmail -t -i
  • 保存后重启Apache服务生效:systemctl restart apache2

3 补充域名验证配置避免邮件被拒收

如果命令行发信正常,但邮箱没收到信,大概率是被服务商的反垃圾策略拦截,需要给发信域名vlfmedia.dk添加3条DNS解析记录:

  • SPF记录:类型TXT,主机记录@,值为v=spf1 a mx ip4:[你的VPS公网IP] ~all
  • DKIM记录:你已经安装OpenDKIM,生成DKIM密钥后把公钥内容作为TXT记录添加到解析
  • DMARC记录:类型TXT,主机记录_dmarc,值为v=DMARC1; p=none; sp=none; rua=mailto:dmarc@vlfmedia.dk

替代方案

如果不想自己维护MTA配置,可以直接使用PHPMailer类库,调用第三方SMTP服务发信,稳定性远高于调用系统mail()函数,也不需要在服务器上配置MTA相关服务。

内容的提问来源于stack exchange,提问作者Hermansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:15:02