1. 程式人生 > >zabbix郵件報警python腳本

zabbix郵件報警python腳本

zabbix python 腳本 郵件 linux

之前保存了一個zabbix的郵件腳本,這次在使用中遇到了一些問題,這裏合大家分享一下。

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import smtplib	
import sys
from email.mime.text import MIMEText
from email.header import Header

def send_mail(to_email,subject,message):
    sender = '[email protected]'
    receiver = to_email

    subject = 'python email test'
    smtpserver = 'smtp.163.com'
    username = 'xxxxx'
    password = 'xxxxx'

    msg = MIMEText(message, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['from'] = sender
    msg['to'] = receiver

    smtp = smtplib.SMTP()
    smtp.connect(smtpserver)
    smtp.login(username, password)
    smtp.sendmail(sender, to_email, msg.as_string())
    smtp.quit()
if __name__ == '__main__':
    send_mail(sys.argv[1],sys.argv[2],sys.argv[3])

當程序運行到 smtp.connect(smtpserver) 的時候,就卡住了,在本地Windows PC上使用pycharm執行就沒有問題

當時在網上找了各種資料,什麽加端口,ping smtp,dig smtp的,都不好使,最後又被我發現了一個腳本,使用了其他的方法,不在使用 smtp.connect


腳本如下:腳本使在菜鳥教程中找到的

#!/usr/bin/python# -*- coding: UTF-8 -*-
 import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr
 my_sender='[email protected]'    # 發件人郵箱賬號my_pass = 'xxxxxxxxxx'              # 發件人郵箱密碼my_user='[email protected]'      # 收件人郵箱賬號,我這邊發送給自己def mail():    ret=True
    try:        msg=MIMEText('填寫郵件內容','plain','utf-8')
        msg['From']=formataddr(["FromRunoob",my_sender])  # 括號裏的對應發件人郵箱昵稱、發件人郵箱賬號
        msg['To']=formataddr(["FK",my_user])              # 括號裏的對應收件人郵箱昵稱、收件人郵箱賬號
        msg['Subject']="菜鳥教程發送郵件測試"                # 郵件的主題,也可以說是標題
 
        server=smtplib.SMTP_SSL("smtp.qq.com", 465)  # 發件人郵箱中的SMTP服務器,端口是25
        server.login(my_sender, my_pass)  # 括號中對應的是發件人郵箱賬號、郵箱密碼
        server.sendmail(my_sender,[my_user,],msg.as_string())  # 括號中對應的是發件人郵箱賬號、收件人郵箱賬號、發送郵件
        server.quit()  # 關閉連接
    except Exception:  # 如果 try 中的語句沒有執行,則會執行下面的 ret=False
        ret=False
    return ret
 ret=mail()if ret:    print("郵件發送成功")else:    print("郵件發送失敗")

裏面調用的是 server=smtplib.SMTP_SSL 經過我測試,只要網絡波動不是很大,基本郵件都可以發送成功


下面是我更改後的,zabbix調用的腳本:

#!/usr/bin/env python
#_*_ coding:utf-8 _*_

import smtplib, sys
from email.mime.text import MIMEText
from email.utils import formataddr

def send_mail(to_email, subject, message):

    #郵箱地址和郵箱密碼
    my_sender = '[email protected]'
    my_pass = 'xxxxx'
    my_user = to_email

    #發送郵件的信息主體,發件人,收件人,內容
    msg = MIMEText(message, 'plain', 'utf-8')
    msg['From'] = formataddr(["Zabbix", my_sender])
    msg['To'] = formataddr(["Ops", my_user])
    msg['Subject'] = subject

    #發送郵件
    server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
    server.login(my_sender, my_pass)
    server.sendmail(my_sender, [my_user, ], msg.as_string())
    server.quit()

if __name__ == '__main__':
    send_mail(sys.argv[1],sys.argv[2],sys.argv[3])


zabbix郵件報警python腳本