使用Python通过SMTP发送邮件
有些业务可能由于各种各样的原因并不适用于Zabbix监控,这时如果要做到系统出问题能立即发送邮件,就需要自己来写监控脚本了,出问题要实时通过邮件报警,以下案例使用Python脚本实现通过SMTP协议发送邮件,一般可用于自定义报警
Python代码
方案一
#!/usr/bin/python
#-*- coding: UTF-8 -*-
import sys,os,string,time,datetime,re
from sys import stdout
import poplib
import smtplib
from email.header import decode_header
from email.mime.text import MIMEText
import email
def send_mail(sender, receiver,strsubject,strcontent):
_user = "xxx@163.com"
_pwd = "xxx"
sent =smtplib.SMTP_SSL('smtp.163.com',465)
sent.login(_user, _pwd)
to = receiver.split(";")
content=MIMEText(strcontent,'html',_charset='UTF-8')
content['Subject']=strsubject
content['From']=sender
content['To']=','.join(to)
sent.sendmail('xxx@163.com',to,content.as_string())
sent.close()
## main ##
if __name__=='__main__':
## get the path in the config file
if len(sys.argv) != 4:
print "sender,receiver,subject"
sys.exit(1)
sender=sys.argv[1]
receiver=sys.argv[2]
subject=sys.argv[3]
content =sys.stdin.read()
send_mail(sender, receiver, subject, content);
方案二
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
from sys import argv
mailto_list=[]
mail_host="smtp.163.com:25" #设置服务器
mail_user="xxx@163.com" #发件用户名(换成自己的)
mail_pass="xxx" #口令(换成自己的)
#mail_postfix="163.com" #发件箱的后缀
debug_level=0 #是否开启debug
def send_mail(to_list,sub,content):
me=mail_user
msg = MIMEText(content,_subtype='plain',_charset='utf-8')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP()
server.set_debuglevel(debug_level)
server.connect(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception as e:
print('except:',e)
return False
if __name__ == '__main__':
try:
mailto_list=argv[1].split(';')
sub=argv[2]
content=argv[3]
except:
print("python send_mail.py 'user1@xx.com;user2@xx.com' sub content")
exit()
if send_mail(mailto_list,sub,content):
print("发送成功")
else:
print("发送失败")
使用Python通过SMTP发送邮件的更多相关文章
- python通过SMTP发送邮件失败,报错505/535
python通过SMTP发送邮件失败:错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission') 我们使用pyth ...
- Python使用SMTP发送邮件[HTML格式、送带附件]
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...
- Python 通过 SMTP 发送邮件
Python版本:Python3.5.2 简介 SMTP是发送邮件的协议,Python 内置对 SMTP 的支持,可以发送纯文本邮件.HTML 邮件以及带附件的邮件. Python 对 SMTP 支持 ...
- python基于SMTP发送邮件
import smtplib from email.header import Header from email.mime.text import MIMEText ''' SMTP是发送邮件的协议 ...
- Python 用SMTP发送邮件
一.简介 上面介绍了传统邮件的生成和解析,这些都是non-internet,也就是不需要网络就可一完成的.那么当生成了邮件,下一步就是发送了,本文就讲解利用SMTP协议发送邮件. 正如SMTP(Sim ...
- Python使用SMTP发送邮件(163,yeah等网易邮箱已测试可以)
#! /usr/bin/env python# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextmailt ...
- python利用smtp发送邮件
#!/usr/bin/env python # -*- encoding: utf-8 -*- # author:IversOn5 import requests import json import ...
- python使用SMTP发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/IP协议簇,它 ...
- python 利用smtp发送邮件,html格式
def send_mail(to_list, sub, context):#sentmail to the maillist ''' to_list: 发送给谁 sub: 主题 context: 内容 ...
随机推荐
- 对QT中QBitArray类进行简单剖析
我们知道Qt中的QBitArray类支持在位(bit)的层次上进行数据操作.本文剖析该类在二进制文件读写时的一些要点.另外,在Qt中,QDataStream类对于二进制文件的读写提供了诸多便利,需要注 ...
- DEVOPS技术实践_15:使用Docker作为Jenkins的slave
前面实验了使用docker搭建一个jenkins,下面实验使用docker作为jenkins的slave节点 1. 环境准备 一个运行Docker的主机或者群集 Jenkins应该能访问互联网,方便安 ...
- Pycharm学生版安装教程(2019-12月更新)
以下方法全部是官方渠道正版激活,可选择学生版(免费) 或企业版(付费) 我的机器学习教程「美团」算法工程师带你入门机器学习 以及 「三分钟系列」数据结构与算法 已经开始更新了,欢迎大家订阅~这篇专 ...
- 1035 插入与归并 (25 分)C语言
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭 ...
- realme X2谷歌套件
目前市面上的很多手机是不支持谷歌相关组件的,经过不断的测试成功适配realme X2(真机测试完美适配) 为框架的GMS是用户想要体验整套Google服务不可绕开的一环,Google地图.Play商店 ...
- 27.python中excel处理库openpyxl使用详解
openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. 读取Excel文件 需要导入相关函数 ? 1 2 3 from openpyxl ...
- 2019年最值得关注的AI领域技术突破及未来展望
选自venturebeat 翻译:魔王.一鸣 前言 AI 领域最杰出的头脑如何总结 2019 年技术进展,又如何预测 2020 年发展趋势呢?本文介绍了 Soumith Chintala.Celest ...
- 快速掌握—HTML快速实现自定义Input开关
HTML <input id="customSwitch" type="checkbox" /> <label for="custo ...
- C++string中find,find_first_of和find_last_of的用法
1. size_t find (const string& str, size_t pos = 0) str.find(str1) 说明:从pos(默认是是0,即从头开始查找)开始查找,找到第 ...
- 【原创】快速失败机制&失败安全机制
这是why技术的第29篇原创文章 之前在写<这道Java基础题真的有坑!我求求你,认真思考后再回答.>这篇文章时,我在8.1小节提到了快速失败和失败安全机制. 但是我发现当我搜索" ...