Python通过smtp服务发送电子邮件给指定用户(适用于Zabbix邮件报警)

简介:

  当下免费的邮件服务很多,例如163企业邮箱、QQ企业邮箱等。不需要自己搭建邮件服务器发送邮件给指 定用户,只需要注册任何一个支持smtp协议的邮箱就可以实现发送邮件。发送邮件可以通过Linux命令、自己编写的Shell脚本,也可以通过Python写的Python脚本。

  如下代码是一个简单却实用的示例。默认无参数执行时,发送预设的邮件主题和邮件内容到预设的用户。带参数执行时将指定的主题和邮件内容发送到指定的用户。带参数执行可用于Zabbix邮件报警脚本。

  对于Zabbix2.x可以直接填写脚本名字。对于Zabbix3.x,需要指定参数,第一个是参数1,第二个是参数2,以此类推。

  如下图所示:

wKioL1dWKSaSK9pPAAJVA_4VyT4855.jpg-wh_50

 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/python
# encoding: utf-8
# -*- coding: utf8 -*-
import  smtplib
import  string
import  sys
 
 
def  usage():
     print ( """
     Function: send email to somebody using smtp protocol
 
     Usage:
         no parameters:   python %s
         with parameters: python %s <mailto> <subject> <message body>
 
     Example: python %s "sendto" "subject" "message"
""" %  (__file__, __file__, sys.argv[ 0 ])
     sys.exit( 0 )
 
 
EMAIL_HOST  =  "smtp.example.domain"               # change it
EMAIL_PORT  =  25                                  # default smtp port
EMAIL_HOST_USER  =  'noreply@example.domain'       # change it
EMAIL_HOST_PASSWORD  =  'your password'            # change it
DEFAULT_FROM_EMAIL  =  'noreply@example.domain'    # change it
CRLF  =  "\r\n"                                    # for Windows user read easily
 
EMAIL_TO  =  "example@example.domain"                                                                      # user defined variable, in Zabbix is {ALERT.SENDTO}
SUBJECT  =  "An email notification from Python"                                                            # user defined variable, in Zabbix is {ALERT.SUBJECT}
text  =  "if you saw this content, it means it works and this is default content with no parameters."      # user defined variable, in Zabbix is {ALERT.MESSAGE}
 
argc  =  len (sys.argv)
if  not  (argc  = =  1  or  argc  = =  4 ):
     print ( "Error: incorrect number of arguments or unrecognized option" )
     usage()
if  argc  = =  1 :
     pass
else :
     if  sys.argv[ 1 is  not  None  and  sys.argv[ 2 is  not  None  and  sys.argv[ 3 is  not  None :
         EMAIL_TO  =  sys.argv[ 1 ]
         SUBJECT  =  sys.argv[ 2 ]
         text  =  sys.argv[ 3 ]
 
BODY  =  string.join((
     "From: %s"  %  DEFAULT_FROM_EMAIL,
     "To: %s"  %  EMAIL_TO,
     "Subject: %s"  %  SUBJECT,
     "",
     text
), CRLF)
 
server  =  smtplib.SMTP()
server.connect(EMAIL_HOST, EMAIL_PORT)
server.starttls()
server.login(EMAIL_HOST_USER, EMAIL_HOST_PASSWORD)
server.sendmail(DEFAULT_FROM_EMAIL, [EMAIL_TO], BODY)
server.quit()

tag:Python邮件报警,Zabbix邮件报警脚本,Python发送邮件

--end--





本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1786821,如需转载请自行联系原作者


相关文章
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
599 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
安全 数据库 数据安全/隐私保护
Python办公自动化实战:手把手教你打造智能邮件发送工具
本文介绍如何使用Python的smtplib和email库构建智能邮件系统,支持图文混排、多附件及多收件人邮件自动发送。通过实战案例与代码详解,帮助读者快速实现办公场景中的邮件自动化需求。
1086 0
|
弹性计算
【已解决】Matomo本地SMTP配置可以发邮件,但部署到阿里云ECS就发不了邮件
在阿里云ECS上使用Matomo和PHPMailer发送邮件时遇到问题,邮件无法发出且接口调用Pending。经过排查,发现是ECS安全组未开放25/465端口,导致SMTP请求无法正常通信。解决方法为在安全组中配置并开放25/465端口,从而恢复邮件发送功能。
428 2
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
995 9
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
575 4
|
监控 网络协议 网络安全
SMTP操作使用详解并通过python进行smtp邮件发送示例
SMTP操作使用详解并通过python进行smtp邮件发送示例
1008 3
|
Windows Python
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
657 0
每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
|
监控 数据安全/隐私保护
Smtp邮件发送失败情况汇总
Smtp邮件发送失败情况汇总
2663 0
|
机器学习/深度学习 数据采集 自然语言处理
Python基于词袋模型特征和TFIDF特征进行支持向量机模型中文邮件分类项目实战
Python基于词袋模型特征和TFIDF特征进行支持向量机模型中文邮件分类项目实战
【简洁】三步开启QQ邮箱SMTP服务并获取授权码
【简洁】三步开启QQ邮箱SMTP服务并获取授权码

推荐镜像

更多