安卓KSWEB Pro服务器PHP+MSMTP发邮件失败,求配置要点
问题
我在三星智能手机上安装了集成PHP、Lighttpd和MSMTP的KSWEB Pro v3.986,想通过gmx、gmail、directbox等外部邮件服务商发送邮件。但运行下面的PHP测试代码后没有任何反应,MSMTP日志也为空,想知道配置里的关键要点是什么?
PHP测试代码:
<?php $from_address = "myuser@directbox.com"; $message = "This is a test"; $bool = mail("my_other_user@gmail.com", "Testmail", $message, "From: MyName <$from_address>"); echo $bool; ?>
我的MSMTP配置:
defaults port 465 # account default account directbox ## host of smtp server, example: smtp.directbox.com ## !edit this! #host 0.0.0.0 host smtp.directbox.com auth on ## Use transport Layer Security (TLS) - Secure Socket Layer (SSL). tls on tls_starttls off tls_certcheck off ## smtp login ## !edit this! user myuser@directbox.com ## smtp password ## !edit this! password myPassword ## Set the envelope-from address. This adress must be equal to ## your email which you are use above. ## !edit this from myuser@directbox.com logfile /data/user/0/ru.kslabs.ksweb/components/log/msmtp/msmtp.log
配置关键要点
- 指定默认账户:当前配置注释掉了
account default,但只定义了account directbox,要添加account default : directbox,让MSMTP默认使用这个账户,否则PHP调用mail()时找不到对应的发件账户。 - 排查日志路径权限:日志为空大概率是KSWEB没有写入指定路径的权限。先手动检查
/data/user/0/ru.kslabs.ksweb/components/log/msmtp/目录是否存在、有没有写入权限;可以临时把日志路径改成/sdcard/msmtp.log(确保KSWEB有权限访问SD卡),快速确认日志是否能正常生成。 - 关联PHP与MSMTP:KSWEB中的PHP必须配置
sendmail_path指向MSMTP的执行文件并指定配置文件路径。比如在php.ini中添加:
注意要和你的KSWEB实际安装路径一致。sendmail_path = "/data/user/0/ru.kslabs.ksweb/components/msmtp/bin/msmtp -C /data/user/0/ru.kslabs.ksweb/config/msmtp/msmtprc" - 验证服务商SMTP参数:
- 确认Directbox的SMTP端口是否确实为465,部分服务商可能要求587端口配合
STARTTLS(此时要把tls_starttls改成on),以官方给出的参数为准。 - 确认
user和password是否正确,像Gmail开启两步验证后必须用应用专用密码,Directbox如果有类似要求也要对应调整。
- 确认Directbox的SMTP端口是否确实为465,部分服务商可能要求587端口配合
- 命令行测试MSMTP:先跳过PHP,直接用命令行测试MSMTP能否发邮件,执行:
如果命令行能发送成功,说明MSMTP配置没问题,问题出在PHP的echo -e "Subject: Test\n\nThis is a test" | msmtp -C /path/to/msmtprc my_other_user@gmail.comsendmail配置;如果命令行也失败,查看此时生成的日志找错误信息。
内容的提问来源于stack exchange,提问作者domac
相关产品推荐
相关产品推荐

