开发者社区> 问答> 正文

阿里云禁止25端口,python自动邮件发送告警解决方案

服务商阿里云
操作系统Centos6.8
由于阿里云把SMTP-25端口禁止使用,即使在安全组里面开通25端口也是无法使用的,于是把python邮件脚本改成SSL协议,端口465


下面是python脚本代码



#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.xxxx.com'  #这个地方填写邮箱,比如smtp.163.com, smtp.aliyun.com
    sslPort= 465   #填写端口
    try:
        msg = MIMEText(unicode(content).encode('utf-8'))
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject
        smtp = smtplib.SMTP_SSL(gserver,sslPort)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)
        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
        #smtp = smtplib.SMTP_SSL(smtpHost,sslPort)  
        #smtp.ehlo()  
        #smtp.login(username,password)
    except Exception,err:
        print "Send mail failed. Error: %s" % err
def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
    #下面是填写邮箱账号密码等,邮箱账户两个是一样的
    sendqqmail(' xxxxxxx@aliyun.com','密码',' xxxxxxx@aliyun.com',to,subject,content)
if __name__ == "__main__":
    main()
#脚本执行命令为 python 脚本名 目标邮箱 "邮件主题" "邮件内容"



下面是简单的告警脚本,通过这个小例子来实现自动告警
这是个自动检测IP地址是否存活,如果不存活自动发送邮件告警
xxxxx@163.com  这个邮箱地址是你要给谁发送告警消息
/usr/local/sbin/mon/mail/mail.py  这个路径是我自己的python脚本路径,根据自己定义的来执行


#!/bin/bash
a=123.23.11.21
ping -c1 $a >/dev/dull
if (($?!=0))
then
    python /usr/local/sbin/mon/mail/mail.py xxxxx@163.com "$a" "Network inaccessible"
fi


展开
收起
砂锅饭 2017-11-16 15:21:33 8448 0
1 条回答
写回答
取消 提交回答
  • SMTP_SLL采用465端口,25端口不能用

    2019-11-20 17:14:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载