抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

[toc]

实现图文格式的服务器性能报表邮件

通过MIMEText 与 MIMEImage类的组合,实现图文邮件格式。
另通过MIMEText类再定义Content-Disposition 属性来实现附件的邮件。
可以利用这些特性来定质服务器周报。

➜  test cat email_open.py 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib
from email.mime.multipart import MIMEMultipart # 导入MIMEMultipart类 
from email.mime.text import MIMEText # 导入MIMEText类 
from email.mime.image import MIMEImage # 导入MIMEImae 类

HOST = "smtp.139.com" # 定义邮件 stmp 主机
SUBJECT = u"业务性能数据报表" # 定义邮件主题
TO = "1922006891@qq.com"  # 定义邮件收件人
FROM = "15822097176@139.com" # 定义邮件发件人

def addimg(src,imgid):  # 添加片函数,参数1:图片路径,参数2: 图片id
    fp = open(src, 'rb') # 打开文件
    msgImage = MIMEImage(fp.read()) # 创建MIMEImage对象,读取图片内容并作为参数
    fp.close() # 关闭文件 
    msgImage.add_header('Content-ID', imgid) # 指定图片文件的Content-ID,<img> 标签src用到

    return msgImage # 返回msgImage 对象

msg = MIMEMultipart('related') # 创建MIMEMultipart对象,采用related定义内嵌资源的邮件体
#创建MIMEText对象,HTML元素包括表格<stable>及图片<img>
msgtext = MIMEText(""" 
<table width="600" border="0"  cellspacing="0" cellpadding="4">
      <tr bgcolor="#CECFAD" height="20" style="font-size:14px">
        <td colspan=2> * 官网性能数据 <a href="www.ssinyao.com"> 更多>> </a></td>
      </tr>
      <tr bgcolor="#EFEBDE" height="100" style="font-size:13px">
        <td>
        <img src="cid:systemload"</td><td>
        <img src="cid:cpu"<td>
      </tr>
      <tr bgcolor="#EFEBDE" height="100" sytle="font-size:13px">
        <td>
        <img src="cid:eth0"></td><td>
        <img src="cid:eth1"></td>
      </tr>
    </table>""", "html","utf-8") #<img> 标签的src属性是通过Content-ID 来引用的

msg.attach(msgtext) 
msg.attach(addimg("./systemload.png", "systemload")) 
msg.attach(addimg("./cpu.png", "cpu")) 
msg.attach(addimg("./eth0.png", "eth0")) 
msg.attach(addimg("./eth1.png", "eth1")) 
msg['Subject'] = SUBJECT # 邮件主题
msg['From'] = FROM # 邮件发送人,邮件头部可见
msg['TO'] = TO # 邮件收件人,邮件头部可见
try:
    server = smtplib.SMTP()  # 创建一个SMTP()对象 
    server.connect(HOST, "25") # 通过connect方法连接smtp主机
    server.starttls() #启动安全传输模式
    server.login("15822097176@139.com","xxxxxxxx") # 邮箱帐号登录校验
    server.sendmail(FROM, TO, msg.as_string()) #邮件发送 
    server.quit() # 断开stmp连接
    print "邮件发送成功"
except Exception, e:
    print "失败:" +str(e)
➜  test ./email_open.py 
邮件发送成功    

实现的功能如下

Alt text

同样功能的实现 muttrc + msmtp 发送邮件

# yum -y install msmtp mutt  

# cat /etc/muttrc 
et sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="15822097176@139.com"
set editor="vim"

# cat /etc/msmtprc
account default
host smtp.139.com
port 25
from 15822097176@139.com
auth login
tls off
user 15822097176@139.com
password xxxxxxxx

# echo "test" | mutt -s "test" -a /path/to/file

评论