Linux系统下使用SMTP发送邮件
下载并安装SMTP组件
- 可以使用wget在线网上下载
- 解压软件包
- 将执行文件放到/usr/local/bin/下方便调用
- 给sendEmail文件执行权限
邮箱发送脚本
vi /opt/sendEmail.sh
#!/bin/bash
#
# Filename: SendEmail.sh
# Revision: 1.0
# Date: 2020/05/29
# Author(作者): xxx
# Email: [email protected]
# Description(说明): 邮件告警脚本
# Notes: 使用sendEmail
#
# 脚本的日志文件
LOGFILE="/tmp/Email.log"
:>"$LOGFILE" #清空文件
exec 1>"$LOGFILE" #将标准输出重定向到日志文件中
exec 2>&1 #将错误输出也重定向到日志文件中
##########################以下变量赋值,(变量值自定义)方便调用#######################
SMTP_server='smtp.qq.com' # 指定SMTP服务器,变量值开自行修改(例如smtp.163com)
username='[email protected]' # 用户名,变量值为自己的邮箱
password='password' # 密码(QQ邮箱用的是授权码)
from_email_address='[email protected]' # 发件人Email地址
to_email_address="$1" # 收件人Email地址,使用位参1调用
message_subject_utf8="$2" # 邮件标题,位参2编写邮箱主题
message_body_utf8="$3" # 邮件内容,位参3为邮件内容
############# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。###########
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"
######################转换邮件内容为GB2312,解决收到邮件内容乱码#####################
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"
####################使用sendmail调用变量发送邮件###############################
sendEmail='/usr/local/bin/sendEmail'
set -x
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
补充1
linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是unicode的一种表达方式,gb2312是和unicode一样都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是一个层次上的。在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。
有如下选项可用:
输入/输出格式规范 | 含义 |
---|---|
-f, --from-code | 名称 原始文本编码 |
-t, --to-code | 名称 输出编码 |
输出控制 | 含义 |
---|---|
-c | 从输出中忽略无效的字符 |
-o, --output | FILE 输出文件 |
-s, --silent | 关闭警告 |
–verbose | 打印进度信息 |
示例:
补充2
sedmail用法
选项 | 含义 |
---|---|
-f | 发件人邮箱地址,例如 -f [email protected] |
-t | 收件人邮箱地址,例如 -t [email protected] |
-s | 发件人邮箱的smtp服务器地址,例如 -s smtp.163.com |
-u | 邮件标题,例如 -u ‘test’ |
-o | 邮件内容格式为html,例如 -o message-content-type=html |
-o | 邮件内容编码为utf8,例如 -o message-charset=utf8 |
-xu | 发件人邮箱登录用户名,例如 -xu [email protected] |
-xp | 发件人邮箱登录密码,例如 -xp ‘passwd’ |
-m | 邮件内容,例如 -m ‘test’ |