大家都知道可以用 curl 来访问 web 页面、下载文件等等,目前最新版本是curl 7.61.0。其实 curl 的功能远不止这么点,它支持众多协议,可以使用 curl 命令来发送邮件,本文就来说说这个技巧。
项目地址
WEB SITE
GitHub
确认 curl 是否支持SMTP
首先确认你的 curl 是否支持 smtp
$ curl-config --protocols | grep SMTP
SMTP
SMTPS
curl-config 命令默认是没有安装的,需要安装一下。
CentOS/RHEL系统:
$ yum install libcurl-devel
Debian/Ubuntu系统:
$ apt-get install libcurl4-openssl-dev
如果不支持 smtp 协议,那么升级 curl,一般新版本都支持。
安装高版本CURL
1.使用 yum 安装的 curl 一般不支持 smtp 协议,接下来我们使用源码包来安装 curl
$ cd /usr/local/src
$ wget https://curl.haxx.se/download/curl-7.61.0.tar.gz
$ tar xzvf curl-7.61.0.tar.gz
$ cd curl-7.61.0
$ ./buildconf
$ ./configure
$ make && make install
2.再次确认下是否支持 curl
$ /usr/local/bin/curl-config --protocols | grep SMTP
SMTP
SMTPS
备注:默认情况下,curl 会被安装到 /usr/local/bin 下,与老版本同时存在。
使用 curl 发送邮件
试着给 linux@ywnz.com 发送一份邮件。
1.编写邮件内容
cat mail.txt
From:linux1@ywnz.com
To:linux@ywnz.com
Subject: curl发送邮件标题
这里是内容,上面有一个空行别忘记了。
2.发送邮件
$ /usr/local/bin/curl -s --url "smtp://smtp.ywnz.com" --mail-from "linux1@ywnz.com" /
--mail-rcpt "linux@ywnz.com" --upload-file mail.txt --user "linux1@ywnz.com:123456"
3.参数说明
--url :smtp地址
--mail-from:发件人邮箱
--mail-rcpt:收件人邮箱
--upload-file:信件内容,包含发件人、收件人、标题、内容
--user:账号密码,中间用冒号分隔
curl 更多协议
curl 支持众多协议,想知道当前 curl 支持哪些协议,使用如下命令:
/usr/local/bin/curl-config --protocols
DICT
FILE
FTP
FTPS
GOPHER
HTTP
HTTPS
IMAP
IMAPS
POP3
POP3S
RTSP
SMB
SMBS
SMTP
SMTPS
TELNET
TFTP
zabbix curl 发邮件脚本:
我们通常使用 sendEmail 来发送告警,下面分享一个 zabbix 使用 curl 发送告警邮件的脚本
$ curl zabbix_curl_sendmail.sh
#!/bin/bash
# ------------------------------------------
# FileName: zabbix_curl_sendmail.sh
# Revision: 1.0
# Date: 2018/7/11
# Author: 凉白开
# Description: use curl send email
# Notes: ~
# ------------------------------------------
# Copyright: 2018 (c) 凉白开
# License: GPL
MAIL_FROM='support@ttlsa.com'
MAIL_TO=$1
MAIL_SUBJECT=$2
MAIL_CONTENT=$3
MAIL_CONTENT_FILE="/tmp/`/bin/date +%s`.txt"
MAIL_SMTP='smtp://smtp.ttlsa.com'
MAIL_USER='support@ttlsa.com'
MAIL_PASSWORD='123456'
# 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}
TAG:
除非注明,文章均由 Linux系统学习 整理发布,欢迎转载。如有版权争议,请联系删除。
文章评论
留言与评论(共有 0 条评论)
验证码: