HTML и обычная электронная почта через Python через Zabbix

Я работаю над сценарием, который создает как HTML, так и обычный текст. Это не доставляло хлопот, но я не могу жестко закодировать письмо в скрипте, который я использую. Позвольте мне объяснить, почему.

Я использую систему Zabbix Monitoring, чтобы следить за своими системами. Позвольте мне использовать принтер, например. Когда один из тонеров близок к умиранию, я хочу, чтобы отправлялись как 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-письма.

Причина, по которой сценарий - беспорядок, заключается в том, что я уже попробовал несколько вариантов, но, похоже, не могу понять это.

0 ответов

Другие вопросы по тегам