大家都知道可以用 curl 来访问 web 页面、下载文件等等,目前最新版本是curl 7.61.0。其实 curl 的功能远不止这么点,它支持众多协议,可以使用 curl 命令来发送邮件,本文就来说说这个技巧。
项目地址
确认 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}
相关主题 |