开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

shell mutt msmtp 发邮件

简介:
+关注继续查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
我的博客已迁移到xdoujiang.com请去那边和我交流
cat mail.sh
#!/bin/bash
#--------------------------------------------------
# Created:2015-05-04
# Author:jimmygong
# Mail:jimmygong@taomee.com
# Function:shell mutt msmtp
# Version:1.0
#--------------------------------------------------
[[ -e /lib/lsb/init-functions ]] && source /lib/lsb/init-functions
[[ -e /etc/init.d/functions ]] && source /etc/init.d/functions
set -o nounset
mailsmtp="smtp.163.com"
mailuser="88888888@163.com"
username="${mailuser%@*}"
mailpwd="123456"
mailport="25"
sdate="log$(date +%s)"
tarcmd="tar xf"
msmtptar="msmtp-1.4.21.tar.bz2"
msmtpver=`echo $msmtptar|awk -F"-" '{print $2}'|sed 's/.tar.bz2//g'`
msmtphead=`echo ${msmtptar%%-*}`
msmtpurl="http://sourceforge.net/projects/msmtp/files/msmtp/$msmtpver/$msmtptar"
mutttar="mutt-1.5.22.tar.gz"
muttver=`echo $mutttar|awk -F"-" '{print $2}'|sed 's/.tar.gz//g'`
mutthead=`echo ${mutttar%%-*}`
mutturl="ftp://ftp.mutt.org/pub/mutt/$mutttar"
debianpkg=(libncurses-dev make gcc bzip2 xsltproc docbook-xsl lynx curl axel wget)
centospkg=(gcc ncurses-devel make docbook-style-xsl.noarch curl wget) 
echosucc () 
{
    succstatus="[ Ok ]"
    printf "\033[32m $succstatus $* \033[0m\n"
}
echofail () 
    failstatus="[ Failure ]"
    printf "\033[31m $failstatus $* \033[0m\n"
    exit 1
}
function echoresult () 
{
if [[ $? == '0' ]]
then
    echosucc
else
    echofail
fi
}
function installwait () 
{
echo -n "Start Install."
for ((i=0;i<3;i++))
do
    echo -n ".";sleep 1
done
echo
}
function installpkg () 
{
installwait
if [[ -e /etc/debian_version ]] && cat /etc/issue|head -1
then
    echo -n "install package:"
    apt-get -y install ${debianpkg[@]} --force-yes > ~/$sdate 2>&1
    echoresult
elif [[ -e /etc/redhat-release ]] && cat /etc/issue|head -1
then
    echo -n "install package:"
    yum -y install ${centospkg[@]} > ~/$sdate 2>&1
    echoresult
else
    echo "Unknown Release:"
    exit 1
fi
}
function downloadpkg () 
{
if [[ ! -e ~/$msmtptar ]] && [[ ! -e ~/$mutttar ]]
then
    echo -n "check msmtpurl:"
    wget -T 15 -q --spider $msmtpurl > ~/$sdate 2>&1
    echoresult
    echo -n "check mutturl:"
    wget -T 15 -q --spider $mutturl > ~/$sdate 2>&1
    echoresult
    echo -n "download $msmtphead:"
    wget --limit-rate=100k $msmtpurl > ~/$sdate 2>&1
    echoresult
    echo -n "download $mutthead:"
    wget --limit-rate=100k $mutturl > ~/$sdate 2>&1
    echoresult
elif [[ ! -e ~/$msmtptar ]]
then
    echo -n "check msmtpurl:"
    wget -T 15 -q --spider $msmtpurl > ~/$sdate 2>&1
    echoresult
    echo -n "download $msmtphead:"
    wget $msmtpurl > ~/$sdate 2>&1
    echoresult
elif [[ ! -e ~/$mutttar ]]
then
    echo -n "check mutturl:"
    wget -T 15 -q --spider $mutturl > ~/$sdate 2>&1
    echoresult
    echo -n "download $mutthead:"
    wget $mutturl > ~/$sdate 2>&1
    echoresult
fi
}
 
function installmsmtppkg () 
{
echo -n "tar $msmtphead:"
$tarcmd ~/$msmtptar > ~/$sdate 2>&1
echoresult
cd ~/$msmtphead-$msmtpver
echo -n "$msmtphead configure:"
./configure --prefix=/usr/local/msmtp > ~/$sdate 2>&1
echoresult
echo -n "$msmtphead make:"
make > ~/$sdate 2>&1
echoresult
echo -n "$msmtphead make install:"
make install > ~/$sdate 2>&1
echoresult
[[ -e /usr/bin/msmtp ]]||ln -s /usr/local/msmtp/bin/msmtp /usr/bin/
cd ..
}
 
function installmuttpkg () 
{
echo -n "tar $mutthead:"
$tarcmd ~/$mutttar > ~/$sdate 2>&1
echoresult
cd $mutthead-$muttver
echo -n "$mutthead configure:"
./configure --prefix=/usr/local/mutt > ~/$sdate 2>&1
echoresult
echo -n "$mutthead make:"
make > ~/$sdate 2>&1
echoresult
echo -n "$mutthead make install:"
make install > ~/$sdate 2>&1
echoresult
[[ -e /usr/bin/mutt ]]||ln -s /usr/local/mutt/bin/mutt /usr/bin/ 
cd ..
}
 
function confmsmtpmutt () 
{
echo -n "configure $msmtphead&&$mutthead:"
[[ -e /usr/local/msmtp/etc ]] ||mkdir -p /usr/local/msmtp/etc
[[ -e /usr/local/msmtp/log ]] ||mkdir -p /usr/local/msmtp/log
[[ -e /etc/Muttrc ]] || cat /etc/Muttrc << EOF
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="${mailuser}"
set editor="vim"
EOF
[[ -e ~/.msmtprc ]] || cat > ~/.msmtprc << EOF
host ${mailsmtp}
tls off
auth plain
from ${mailuser}
user ${username}
password ${mailpwd}
EOF
[[ -e ~/.muttrc ]] || cat > ~/.muttrc << EOF
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set from=${mailuser}
set envelope_from=yes
EOF
[[ -e /usr/local/msmtp/etc/msmtprc ]] || cat /usr/local/msmtp/etc/msmtprc << EOF
defaults 
account ${username}
host ${mailsmtp}
from ${mailuser}
auth login
port ${mailport}
tls off
user ${mailuser}
password ${mailpwd}
account default : ${username}
logfile /usr/local/msmtp/log/msmtp.log
EOF
echoresult
}
 
installpkg
downloadpkg
installmsmtppkg
installmuttpkg
confmsmtpmutt
echo "Test: echo "OKOK"|mutt -s "OKOK" $mailuser"
exit 0
 
===============================说明==================================
执行效果
bash mail.sh 
Start Install....
Debian GNU/Linux 5.0 \n \l
install package: [ Ok ] 
check msmtpurl: [ Ok ]  
check mutturl: [ Ok ]  
download msmtp: [ Ok ]  
download mutt: [ Ok ]  
tar msmtp: [ Ok ]  
msmtp configure: [ Ok ]  
msmtp make: [ Ok ]  
msmtp make install: [ Ok ]  
tar mutt: [ Ok ]  
mutt configure: [ Ok ]  
mutt make: [ Ok ]  
mutt make install: [ Ok ]  
configure msmtp&&mutt: [ Ok ]  
Test: echo OKOK|mutt -s OKOK 88888888@163.com
 
测试(收到邮件了)
echo "OKOK"|mutt -s "OKOK" 88888888@163.com       
如果是需要带附件的话
/usr/local/mutt/bin/mutt -s "aaaaa" 88888888@163.com -c 88888888@qq.com </root/stock/20150418.1429337805 -a /root/stock/20150418.1429337805
-s 邮件标题         -s <subj>    specify a subject (must be in quotes if it has spaces)
-c 抄送地址         -c <address>    specify a carbon-copy (CC) address
-a 是附件           -a <file>    attach a file to the message
/root/stock/20150418.1429337805为邮件正文 。
如果发送多个附件,需要在每个附件前加-a参数。 
 
有问题就看这个日志里的信息log$(date +%s)
 
此脚本在centos6.6和debian6.0和debian5.0上都跑过
 
wget --limit-rate=100k                #限速下载
wget --spider                         #测试下载链接
-T,  --timeout=SECONDS                #设置超时时间
-q,  --quiet quiet (no output).       #不显示指令执行过程









本文转自 xdoujiang 51CTO博客,原文链接:http://blog.51cto.com/7938217/1641803,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
监控多台服务器磁盘利用率shell脚本
监控多台服务器磁盘利用率shell脚本
64 0
Shell脚本中利用expect实现非交互式
expect非交互式 expect可以在脚本中完成一些交互式的操作,例如远程登录时要输入yes或者输入密码 expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。 expect自动交互流程:
95 0
shell脚本并发控制详解
shell并发控制 1.文件描述符 File Descriptors (FD,文件描述符或文件句柄):进程使用文件描述符来管理打开的文件 查看当前进程的fd 确定以下三点 如何exec打开一个文件 ​ exec 3<> file1.txt 如何exec关闭一个文件(释放文件句柄) 如果没有释放句柄,文件删除后描述符依然还在 ​ exec 3<&- 当一个文件FD未被释放,删除源文件也不会影响FD ​ rm -rf file1 ​ cp /proc/$$/3 file1
104 0
Shell脚本数组与字符串处理|学习笔记
快速学习Shell脚本数组与字符串处理
62 0
+关注
20376
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载