Curl 发送邮件

关于curl,大家都知道它可用来访问web页面,下载文件等等。其实它的功能远不止这么点,它支持众多协议,其中就包括发送邮件的SMTP协议。

确认curl是否支持SMTP

首先确认你的curl是否支持smtp。

1
# curl-config --protocols |grep SMTP

如果不支持smtp协议,那么重新安装curl。

安装高版本curl

使用yum安装的curl一般不支持smtp协议,接下来我们使用源码包来安装。

1
2
3
4
5
6
7
# cd /usr/local/src
# wget https://github.com/bagder/curl/archivemaster.zip
# unzip master.zip
# cd curl-master
# ./buildconf
# ./configure
# make && make install

安装好后再次确认是否支持smtp。

使用curl发送邮件

编写邮件内容

1
2
3
4
5
6
# cat mail.txt
From:from@xxx.com
To:to@xxx.com
Subject: curl发送邮件标题
邮件内容。。。

发送邮件

1
# /usr/local/bin/curl -s --url "smtp://smtp.xxx.com --mail-from "from@xxx.com" --mail-rcpt "to@xxx.com" --upload-file mail.txt --user "from@xxx.com:PASSWORD"

参数说明

–url: smtp地址

–mail-from: 发件人邮箱

–mail-rcpt: 收件人邮箱

–upload-file: 信件内容,包含发件人、收件人、标题、内容

–user: 账号密码,中间用冒号分割

curl更多协议

curl支持众多协议,详细内容可使用如下命令查看。

1
# /usr/local/bin/curl-config --protocols

zabbix curl发邮件脚本

我们通常使用sendEmail来发送告警,下面分享一个zabbix使用curl发送告警邮件的脚本。

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
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: zabbix_curl_sendmail.sh
# Revision: 1.0
# Date: 2016/02/18
# Author: dingmingk
# Email: dingmingk@gmail.com
# Website: www.dingmingk.com
# Description: use curl send email
# Notes: ~
# -------------------------------------------------------------------------------
# Copyright: 2015 (c) dingmingk
# License: GPL
MAIL_FROM='from@xxx.com'
MAIL_TO=$1
MAIL_SUBJECT=$2
MAIL_CONTENT=$3
MAIL_CONTENT_FILE="/tmp/`/bin/date +%s`.txt"
MAIL_SMTP='smtp://smtp.xxx.com'
MAIL_USER='from@xxx.com'
MAIL_PASSWORD='PASSWORD'
# create mail content file
echo "From:${MAIL_FROM}
To:$1
Subject: $MAIL_SUBJECT
$MAIL_CONTENT "> ${MAIL_CONTENT_FILE}
# send mail
/usr/local/bin/curl -s --url "${MAIL_SMTP}" --mail-from "${MAIL_FROM}" --mail-rcpt ${MAIL_TO} --upload-file ${MAIL_CONTENT_FILE} --user "${MAIL_USER}:${MAIL_PASSWORD}"
# delete mail content file
rm ${MAIL_CONTENT_FILE}