【教程】树莓派自动发送邮件

树莓派接一上电就一直运行着,如果运行出现什么问题我们可能无从得知,所以希望把这种突发信息发送至手机。我们可以配置一个邮件客户端并且编写一个脚本自动发送。本文将实现开机时自动发送一封邮件到指定邮箱,这样如果断电或者机器重启,即便出门在外也能接收到通知。


实验环境

硬件:树莓派3b一台
操作系统:Raspbian with desktop
安装软件:mutt、msmtp
前期工作
树莓派程序开机自启动方法总结
安装步骤
1、安装mutt、msmtp
pi@raspberry:~ $ sudo apt-get install mutt

pi@raspberry:~ $ sudo apt-get install msmtp

msmtp是Linux下的一款邮件客户端,mutt通过调用msmtp来收发邮件。关于这两个软件详细说明请自行百度。
2、配置msmtp
在当前用户目录下新建.msmtprc
pi@raspberry:~ $ nano ~/.msmtprc

内容如下:
account default

host smtp.yeah.net
from 填写你的邮箱
auth plain
user 填写你的邮箱
password 密码
logfile /var/log/msmtp.log
需要特别说明的是host字段,这个需要填写你使用邮箱的SMTP服务器地址,比如QQ邮箱应该填写:smtp.qq.com
替换填入自己的邮箱密码,ctrl+o保存,ctrl+x退出。
3、配置mutt
在当前用户目录下目录下新建.muttrc
pi@raspberrypi:~ $ nano ~/.muttrc

.muttrc内容如下:
【【教程】树莓派自动发送邮件】set sendmail="/usr/bin/msmtp"

set use_from=yes
set realname="RaspberryPi"
set editor="nano"
realname字段会显示在发件人一栏,可以任意替换。保存并退出。
至此,邮件客户端配置完成。
4、发送邮件测试
在终端下输入:
pi@raspberry:~ $ echo "hello pi" |mutt -s "hello" ?接收的邮箱

这里会提示出错,意思是除了当前用户外不允许其他用户有读写权限。
【教程】树莓派自动发送邮件
文章图片
所以需要强制将读写权限设置为当前用户
pi@raspberry:~ $ chmod 600 .msmtprc

再一次发送邮件就能成功了,成功发送没有任何提示,?如果有以下警告提示:
【教程】树莓派自动发送邮件
文章图片
这个问题的原因是msmtp没有权限操作log目录,我们需要手动去创建日志文件并设置好权限让msmtp可读写。
pi@raspberry:~ $sudo touch /var/log/msmtp.log

pi@raspberry:~ $sudo chmod 666 /var/log/msmtp.log


设置启动自动发送邮件 1、编写邮件发送脚本
pi@raspberry:~ $ nano sendmail.sh

sendmail.sh内容如下:
#!/bin/sh

sleep 1m
echo "hello pi" |mutt -s "hello" 接收的邮箱
sleep 1m,表示等待一分钟,是因为启动执行这段脚本时网络未必已经连接。
给脚本增加执行权限
pi@raspberry:~ $ chmod +x sendmail.sh

2、将脚本设置为开机自启动
编辑/etc/rc.local文件
pi@raspberry:~ $ ?sudo nano /etc/rc.local

在exit 0之前加入一行代码:
su pi -c "exec ~/sendmail.sh" &

代码末尾的“&”表示不等待脚本执行完毕就返回,事实情况会创建新的进程去执行这条命令。
重启,测试,1分钟后查看邮箱就会收到邮件了。


另外 如果发送邮件是成功的,但是邮箱始终收不到邮箱,请检查下邮箱设置或者查看下垃圾箱,看看是否邮件是否被过滤到垃圾箱里面去了。


关注微信公众号及时获取更新文章,欢迎大家跟我交流技术与想法:

【教程】树莓派自动发送邮件
文章图片

    推荐阅读