测试环境:Ubuntu 11.10

1. 安装mutt及msmtp软件

sudo apt-get install mutt
sudo apt-get install msmtp

2. 编辑配置文件vi ~/.muttrc

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Guobao Jiang"
set from=loveaborn@163.com
set envelope_from=yes

3.编辑配置文件vi ~/.msmtprc  (账号和密码相应改动,最好把该文件属性改为:

chmod 700 ~/.msmtprc

其他人不能修改和查看)

account default
host smtp.163.com
from loveaborn@163.com
auth plain
user loveaborn
password ####
logfile ~/.msmtp.log

4.编写自动发送邮件脚本,如下:

#!/bin/bash
######################################################################################
# this shell script is used to send mail automatically
# the root structure is
# .
# ./autosend.sh -- this shell script
# ./attach/ -- this folder stored mail's all attachment.
# ./bak/ -- for backup
# ./log/ -- send & unsend log files
# ./mail/ -- mail text content, default file name './mail/mail.md'
# ./readme.md -- readme file (not mandatory)
# version: v0.1 @Aug. 4, 2013, by Guobao Jiang
###################################################################################### dateInfo="$(date +%Y-%m-%d-%H-%M-%S)"
attachName="attach_$dateInfo.tar.gz";
contentFile="./mail/mail.md"
toName="loveaborn@foxmail.com"
ccName="loveaborn@163.com"
if [ -f ./mail/mail.md ]; then
if [ ! -f ./log/send.log ];then
touch ./log/send.log
fi
sendLog="./log/send.log"
tar zcvf $attachName ./attach
sleep 2
rm -rf ./attach/*
mkdir -p "./bak/mail_$dateInfo"
cp $attachName "./bak/mail_$dateInfo"
cp ./mail/mail.md "./bak/mail_$dateInfo" echo -e " " >>$contentFile
echo -e "------------------" >> $contentFile
echo -e "Note: This mail is automaticall by my server." >> $contentFile
echo -e "BR// Guobao Jiang (loveaborn@foxmail.com)" >> $contentFile
echo -e "DateRecord: $dateInfo" >> $contentFile echo -e " " >>"$sendLog"
echo -e "-----------------------------------" >>"$sendLog"
echo -e "Sending mail..." >>"$sendLog" mutt -s "Update Experiments Result $dateInfo" -c $ccName $toName \
-a $attachName< "$contentFile" if [ $? -eq 0 ]; then
rm -rf $attachName
rm -rf ./mail/mail.md
#rm -rf ./attach/* # if success, delete all attachment files.
echo -e "mail was sent to $toName and cc to $ccName successully!" >> \
"$sendLog"
else
rm -rf $attachName
rm -rf "./bak/mail_$dateInfo"
echo -e "mail sent failed! Please try again!" >>"$sendLog"
fi
echo -e "RecordTime:$dateInfo" >>"$sendLog" else
if [ ! -f ./log/record.log ]; then
touch ./log/nosend.log
fi
echo -e "No mail contents to send! RecordTime: $dateInfo" >>./log/nosend.log
fi

注意0: 文件autosend.sh,添加可执行属性

chmod u+x autosend.sh

注意1:附近 -a $attachName 放在最后,不然会出现如下错误:

Can’t stat loveaborn@foxmail.com: No such file or directory
loveaborn@foxmail.com: unable to attach file.

注意2:我的邮件内容是放在./mail/mail.md文件里的,发送完会备注到./bak下并删除原来的文件。

目录结构如下:

参考链接:点击

Ubuntu Linux自动发邮件配置及邮件发送脚本的更多相关文章

  1. ubuntu Linux 操作系统安装与配置

    Ubuntu是一个以桌面应用为主的Linux操作系统.Ubuntu每六个月发布一个新版本(一般是4和10月份,命名为YY.MM),每一个普通版本都将被支持 18个月,长期支持版(Long Term S ...

  2. jenkins邮件配置以及邮件添加附件详解

    1.在系统管理-系统设置  中找到邮件配置模块 填写情况如下图 第一步,填写系统管理员邮箱 第二步,填写邮箱配置 第三步,然后在项目中添加邮箱配置 项目中邮件设置中关于附件添加 因为我的项目目录中分3 ...

  3. svn自动发用户名密码到邮件(明文密码)

    #!/bin/sh touch testlist cat /dev/null > testlist grep "=" passwd |grep -v "#" ...

  4. jekins构建通知邮件配置及邮件附件设置,jenkins构建通知邮件没有RF的log和report文件

    全局配置: 系统管理-系统设置-Extended E-mail Notification (本邮件是程序自动下发的,请勿回复!)<br/><br/>项目名称:$PROJECT_ ...

  5. ubuntu linux环境下安装配置jdk和tomcat

    关于linux搭建服务器,ubuntu中jdk和tomcat的安装和配置 一.jdk的安装配置 1:去官网下载好自己需要的版本,注意,linux压缩文件通常以tar.gz结尾,别下载错了.本次我下载安 ...

  6. (实用)Ubuntu Linux静态IP网络配置

    记录备忘. 基于Ubuntu 14.04 LTS Server. 首先查看一下当前系统的网卡: $ sudo iconfig 比如这里我除了回环网路lo外,网络接口名为em1,下面就去给它配置网络. ...

  7. Ubuntu linux下部署golang配置环境,极客学院 无闻讲的安装配置是错的,折腾我好几遍,真是有点坑

    开始按极客学院无闻讲的做,弄了几遍都不行,最后发现是错的,别人告诉我这是mac下的virtualbox是这样的,不管怎样,被坑的不浅. 虽然sudo apt install golang-go 就能安 ...

  8. SQL Server代理(4/12):配置数据库邮件

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在以前的文章里我们看到,SQL Serve ...

  9. Jenkins之发送html附件邮件配置

    邮件配置: 邮件内容范例: ${FILE,path="C:\\Users\\Administrator\\.jenkins\\workspace\\XXX自动化测试工程目录\\$JOB_BA ...

随机推荐

  1. CODEVS 4655 序列终结者-splay(区间更新、区间翻转、区间最值)

    4655 序列终结者  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解       题目描述 Description 网上有许多题,就是给定一个序列,要 ...

  2. PHP各种经典算法

    <?  //--------------------  // 基本数据结构算法 //--------------------  //二分查找(数组里查找某个元素)  function bin_s ...

  3. CSUOJ 1040 Round-number

    Description Most of the time when rounding a given number, it is customary to round to some multiple ...

  4. libhiredis.so.0.13: cannot open shared object file: No such file or director

    Hiredis安装步骤: tar zxvf antirez-hiredis-v0.10.1-0-g3cc6a7f.zip cd antirez-hiredis-3cc6a7f make 解决办法: m ...

  5. ARM Linux 驱动Input子系统之按键驱动测试

    上一篇已经谈过,在现内核的中引入设备树之后对于内核驱动的编写,主要集中在硬件接口的配置上了即xxxx.dts文件的编写. 在自己的开发板上移植按键驱动: 1.根据开发板的原理图 确定按键的硬件接口为: ...

  6. WS快捷键

    打开文件: Ctrl + Shift + N 打开类: Ctrl + N 打开函数: Ctrl + F12 “超级”打开: 双击 shift,可以 search anywhere. 复制整行: Ctr ...

  7. 【SQL】178. Rank Scores

    Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ra ...

  8. 使用gdb调试

    启用gdb进行调试二进制程序,必须在二进制程序在采用gcc或g++编译时加入-g参数 启动gdb进行调试的几种形式: 直接启动gdb程序进行调试program程序 gdb program 启动gdb挂 ...

  9. [ 原创 ] git使用技巧

    Git的使用--如何将本地项目上传到Github Git分支图介绍 https://www.cnblogs.com/cheneasternsun/p/5952830.html https://www. ...

  10. [ 原创 ]学习笔记- 数据在Activity之间的传递的情况

    情况一:一个Activity跳转到另一个Activity时,将第一个Activity的数据传递到第二个Activity里面. 分析:当一个界面跳转到另一个界面的同时还要讲数据传递过去,这种情况需要用I ...