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

RPi 1B开机自启Python按键拍照脚本时Mutt发送邮件失败求助

问题根因

Mutt的用户级配置默认存放在当前用户家目录的.muttrc文件内,手动执行脚本时使用的是已配置好邮箱参数的pi用户,所以功能正常;但你将开机启动规则添加到了root用户的crontab中,程序以root身份运行时会读取/root/.muttrc路径下的配置,该路径不存在对应Mutt配置,因此邮件发送失败。

排查思路

  • 查看已有的cron日志定位报错:你已经配置了启动日志输出到/home/pi/logs/cronlog,执行命令cat /home/pi/logs/cronlog即可看到Mutt运行时的具体错误,常见报错包含「无法找到配置文件」「SMTP认证失败」等。
  • 模拟root身份运行验证问题:执行sudo python /home/pi/doorbell02.py,手动触发按键测试邮件发送功能,如果同样失败即可确认是用户身份差异导致的问题。

解决方法

两种方案任选其一即可:

方案1:将启动任务放在pi用户的crontab中(推荐)

  1. 删除root用户crontab中的原有规则:执行sudo crontab -e,删掉对应的@reboot配置行后保存退出。
  2. 编辑pi用户的crontab:执行crontab -e(无需加sudo),添加相同的启动规则:
@reboot sh /home/pi/launcher.sh >/home/pi/logs/cronlog 2>&1
  1. 重启设备测试即可,此时脚本以pi用户身份运行,可直接读取已有的Mutt配置,邮件发送功能恢复正常。

方案2:为root用户配置Mutt运行环境

  1. 复制pi用户的Mutt配置到root家目录:执行sudo cp /home/pi/.muttrc /root/
  2. 如果Mutt依赖其他授权文件、证书文件,也一并复制到root用户对应的路径下,或者直接在调用Mutt的命令中指定配置文件路径,修改Python脚本中的Mutt调用代码:
subprocess.call("echo "" | mutt -F /home/pi/.muttrc -s 'Someone at the door' -i /home/pi/messageBody.txt myname@mailprovider.com -a %s" % filename, shell=True)

注意:要把脚本中用到的messageBody.txt等相对路径的文件替换为绝对路径,避免不同用户运行时找不到文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:39:03