Linux系统下使用SMTP发送邮件

下载并安装SMTP组件

  1. 可以使用wget在线网上下载
  1. 解压软件包
  1. 将执行文件放到/usr/local/bin/下方便调用
  1. 给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’
08-31 15:12