说起发送邮件,我们第一反应就是写代码实现一个,其实在linux里面,无需借助java、c等重型编程语言就能轻松实现发送邮件的需求,下面介绍两种发邮件方法:

一、linux原生邮件服务

增加配置

/etc/mail.rc中追加
set from=发送邮箱
set smtp="smtps://smtp.liming.pub:465"
set smtp-auth-user="用户@xxx.com"
set smtp-auth-password="密码"
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

测试发送

echo hello word | mailx -v -s "demo title" "接受用户1@liming.pub"

多个接收人邮箱以英文逗号 , 号分割,末尾不用加 , 号,如:"接受用户1@liming.pub,接受用户2@liming.pub"

二、python发送邮件

增加脚本

/usr/local/bin/mail.py
#!/usr/bin/env python3
#coding: utf-8

import sys
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 第三方STMP服务配置
sender = '发送用户名@liming.pub;'
smtp_server = 'smtp.liming.pub'
username = '发送用户名@liming.pub' # 这里需要带域名后缀
password = '密码'

def send_mail(title, content, receiver):

    try:
        msg = MIMEText(content,'html','utf-8')
        if not isinstance(title,unicode):
            title = unicode(title, 'utf-8')
        msg['Subject'] = title
        msg['From'] = sender
        msg['To'] = receiver
        msg["Accept-Language"]="zh-CN"
        msg["Accept-Charset"]="ISO-8859-1,utf-8"

        smtp = smtplib.SMTP_SSL(smtp_server,465)
        smtp.login(username, password)
        smtp.sendmail(sender, receiver, msg.as_string())
        smtp.quit()
        return True
    except Exception, e:
        print str(e)
        return False

if send_mail(sys.argv[1], sys.argv[2], sys.argv[3]):
    print "发送邮件成功!"
else:
    print "发送邮件失败!"

测试发送

python mail.py "邮件标题" "邮件正文" "接受用户1@liming.pub;"

多个接收人邮箱以英文分号 ; 分割,另外末尾也要加 ; 号,如:"接受用户1@liming.pub;接受用户2@liming.pub;"