树莓派自动发送邮件

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

实验环境

硬件:树莓派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分钟后查看邮箱就会收到邮件了。

另外

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

原文链接:

https://mp.weixin.qq.com/s?src=11&timestamp=1511940867&ver=543&signature=2lS14NCq4QHMXMs8czuE8cxMjx1gwRkhU1VhhIeBtOBE8X7joJ6wdrRzeV139R6WXLZUjO3006FEaEcMbNSNi9d5dKZ1xld3btp1C9CR2mBAOVSvjr0qza2G5sF7j6Qr&new=1

发表回复