活了二十多年,没能为祖国、为人民做点什么,每思及此,伤心欲绝 !

利用python发送email邮件

Python keguang 444℃ 0评论

公司大数据业务开始时间不长,大数据监控体系还没有,对于各种程序的定时监控也没有好的解决方案,比如在程序、数据异常时,第一时间发一封邮件通知相关人员也是好的。考虑到好多定时任务是用python来触发,管理的,我们选择了轻便,灵活,功能强大的python语言来实现发送邮件功能。

  • 发送邮件方法这里给出Python2代码如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-

import datetime
import commands

# 执行shell命令
def execCmd(cmd):
    cmd = 'source /etc/profile;' + cmd
    return commands.getstatusoutput(cmd)

def sendEmail(info):
    #发送邮件
    import smtplib
    #构造邮件
    from email.mime.text import MIMEText

    #发送服务器地址
    # mail_host = 'smtp.qq.com'
    # qq企业邮箱与qq邮箱服务器地址有所不同
    mail_host = 'smtp.exmail.qq.com'

    #用户名
    mail_user = 'keguang@qq.com'
    #密码/授权码
    mail_pass = '123456'

    #指定发件人
    me = mail_user
    #收件人
    mail_receive = ['123456789@163.com', '123456789@139.com']

    #主题
    mail_subject = '实时程序状态...'
    #内容
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    mail_content = '%s<br/>时间 %s'%(info, now)

    #构造文件内容
    #plain表示纯文本,html表示网页版
    msg = MIMEText(mail_content,'html','utf-8')
    msg['Subject'] = mail_subject
    msg['From'] = me
    msg['To'] = ';'.join(mail_receive)

    ##发送邮件
    #连接服务器
    client = smtplib.SMTP_SSL(mail_host,465)
    #登陆服务器
    client.login(mail_user,mail_pass)
    #发送邮件
    client.sendmail(me,mail_receive,msg.as_string())

    #退出
    client.quit()

if __name__ == '__main__':
    types = ['install', 'helper']
    types2 = ['Install', 'Helper']
    for i in range(len(types)):
        type_ = types[i]
        cmd = 'ps -ef | grep SparkSubmit | grep /home/hadoop/config/flash/%s/commons.xml'%(type_)
        (status, res) = commands.getstatusoutput(cmd)
        if len(res.split("\n")) == 1:
            cmd = 'sh /home/hadoop/scripts/flash/submit%s.sh'%(types2[i])
            (status, res) = commands.getstatusoutput(cmd)
            info = ''
            if status == 0:
                info = '%s spark 实时程序停止,已经重新启动一次...'%(type_)
            else:
                info = '%s spark 实时程序停止,重新启动失败...'%(type_)
            sendEmail(info)
        else:
            info = '%s spark 实时程序运行正常...'%(type_)
            sendEmail(info)

如果觉得复杂,可以新建一个.py文件,比如名为emailTest.py,将这个方法放入,放入当前工作目录,用的时候就可以调用

import emailTest

将这个模块导入,发送邮件时只需要:

 

if __name__ == '__main__':
    emailTest.sendEm('发送邮件测试即可')

转载请注明:柯广的博客 » 利用python发送email邮件

喜欢 (3)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址