创客神器NanoPi
直播中

h1654155200.7526

12年用户 177经验值
擅长:嵌入式技术 模拟技术 控制/MCU
私信 关注
[经验]

【NanoPi NEO试用体验】-7-收发邮件篇

本帖最后由 JMU2012 于 2016-12-15 14:27 编辑

0、前言
上一期,做的是关于光电传感器和摄像头的配合。那么拍摄完照片后,需要及时发给管理员。那么就想到可以使用邮件服务。那么,这一期,承上启下,把上次拍的照片发出去。

1、功能简介
当满足某个触发条件时,打包某个文件内的文件,发送到指定邮箱,通知管理员。

2、方案
在Pi上安装一个轻量级的邮件传输代理程序(ssmtp)和客户端(mutt),就能轻松使用Email。

3、安装邮件传输代理程序SSMTP
提示没有这个软件,于是想到应该添加一个软件源。
依次进行下面操作:
$ sudo vim /etc/apt/source.list
取消以下两行注释:
7-1.png
更新软件源:
$ sudo apt-get update
再次安装,成功:

4、配置ssmtp
安装后进行配置,这里提醒一下,要使用smtp服务,需要在邮箱中开通指定服务,这里以163邮箱为例:
7-3.png
$ sudo vim /etc/ssmtp/ssmtp.conf
  1. #
  2. # Config file for sSMTP sendmail
  3. #
  4. # The person who gets all mail for userids < 1000
  5. # Make this empty to disable rewriting.
  6. root=xxx@163.com

  7. # The place where the mail goes. The actual machine name is required no
  8. # MX records are consulted. Commonly mailhosts are named mail.domain.com
  9. mailhub=smtp.163.com:25

  10. AuthUser=xxx@163.com
  11. AuthPass=xxx
  12. #AuthMethod=LOGIN

  13. # Where will the mail seem to come from?
  14. rewriteDomain=163.com

  15. UseTLS=NO
  16. UseSTARTTLS=NO
  17. # The full hostname
  18. hostname=FriendlyARM

  19. # Are users allowed to set their own From: address?
  20. # YES - Allow the user to specify their own From: address
  21. # NO - Use the system generated From: address
  22. FromLineOverride=YES


5、安装客户端mutt:

$ sudo apt-get install mutt
安装后进行配置:
还需要配置:
$ vim ~/.muttrc
  1. set sendmail=/usr/***in/ssmtp
  2. set use_from=yes
  3. set realname="Kelvin"
  4. set from="xxx@163.com"
  5. set envelope_from="yes"
测试一下:
$ echo "Hello" | sudo mutt -s "Test"[对方的邮箱]
看一下对方的收件箱是否有邮件。


还可以发送附件,命令格式为:
echo | mutt -s -a --

ps:只有mail用户组的成员才能使用mutt,将pi用户加入mail用户组:
$ gpasswd -a fa mail

也可以使用mutt客户端进行发送邮件,感觉很方便。
$ sudo mutt
7-2.png

6、编写发邮件的shell脚本
在这个脚本里可以配置需要发送的附件,如拍摄的照片或者一些其他文件,还可以指定邮箱。
  1. #!bin/bash
  2. echo "Hello" | sudo mutt -s "TestHello"  -a /home/fa/folder_to_mail/log.txt  -- xxx@qq.com


7、在C语言中调用shell脚本发送邮件

在这个程序中调用之前写好的shell脚本。
  1. #include
  2. #include
  3. int main()
  4. {
  5.    system("sh /home/fa/code/mail_demo/SendMail.sh");
  6.    printf("Email has been sent!n");
  7.    return 0;
  8. }
8、小结
这一期完成了邮箱的配置和使用邮箱服务,下一期,就是项目结题篇。将所有之前的准备工作一起综合一下。完成项目实践。


回帖(2)

h1654155200.7526

2016-12-15 14:01:35
本帖最后由 JMU2012 于 2016-12-15 14:29 编辑

插入代码的格式怎么不对了,表示好忧伤~现在好啦~
举报

Chensy279

2016-12-15 17:00:06
不错,继续分享学习经验哦
举报

更多回帖

发帖
×
20
完善资料,
赚取积分