本文共 1895 字,大约阅读时间需要 6 分钟。
我正在编写一个脚本,可以创建HTML和纯文本电子邮件。这看起来并不麻烦,但我无法将电子邮件硬编码到我正在使用的脚本中。请允许我解释一下原因。在
我用Zabbix监控系统监视我的系统。例如,请允许我使用打印机。一旦其中一个调色剂快死了,我希望同时发送HTML和纯文本邮件。然而,Zabbix使用了几个宏,这些宏可以用来识别哪个系统受到什么影响。在
因此,在运行脚本之前需要接收HTML主体。一旦HTML正文接收到正确的值,它也需要一个普通副本。尽管我希望纯文本也包含正确的参数(从宏中复制),但我不认为这是必要的。在
这就是我的脚本目前的样子。在#!/usr/bin/env python
list1=[0, 1, 2, 3, 4];
import mimetypes, os, smtplib, sys
from email import encoders
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
me = "x"
you = "y"
DESTINATION=sys.argv[1]
SUBJECT=sys.argv[2]
MESSAGE=sys.argv[3]
PASS='password'
# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = me
msg['To'] = you
text = "A problem has been detected on {HOST.NAME} \n \n Trigger: {TRIGGER.NAME} \n Status: {TRIGGER.STATUS} \n Severity: {TRIGGER.SEVERITY} "
#html =
# Record the MIME types of both parts - text/plain and text/html.
part1 = MIMEText(text, 'plain')
#part2 = MIMEText(html, 'html')
# Attach parts into message container.
# According to RFC 2046, the last part of a multipart message, in this case
# the HTML message, is best and preferred.
msg.attach(part1)
#msg.attach(part2)
# Send the message via local SMTP server.
s = smtplib.SMTP('mysmtpserver')
s.ehlo()
s.starttls()
s.ehlo()
s.login(me, PASS)
# sendmail function takes 3 arguments: sender's address, recipient's address
# and message to send - here it is sent as one string.
s.sendmail(me, you, msg.as_string())
s.quit()
我不能让它们单独发送或单独发送HTML副本的原因是因为我的电子邮件被SpamAssassin屏蔽了。我打算给我的客户发送一些错误信息。所以当碳粉快用完时,他们会立即得到通知,这样他们就可以下新订单了。HTML电子邮件已经设置好,并且一直在正常工作。在
所以再把它放在透视图上。在Zabbix收到一个错误。在
有一个默认的HTML消息写入,宏变为填充,然后需要将其导入到脚本中。在
然后运行脚本。在
有一封电子邮件同时包含HTML内容和
纯文本用户不能阅读HTML电子邮件。在
剧本一团糟的原因是我已经试过好几个选项了,但我似乎没能想出这个。在
转载地址:http://krjdv.baihongyu.com/