Python mysql запрос соединителя для отправки электронной почты - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть сценарий, который подключается к mysql и распечатывает запрос для отправки на электронную почту.

#!/bin/python
import smtplib
import datetime
import mysql.connector
from email.mime.text import MIMEText

cnx = mysql.connector.connect(user='admin', password='admin',
                                host='127.0.0.1',
                                database='database')
cursor = cnx.cursor()
query = ("SELECT name, description, valid_to, application, location, issuer FROM certs "
         "WHERE hidden = 0 and valid_to >= %s  and valid_to < %s")

valid_from =  datetime.date(2020, 1, 1)
valid_until = datetime.date(2020, 12, 31)

cursor.execute(query, (valid_from, valid_until))

for (name, description, valid_to, application, location, issuer) in cursor:

  msg = MIMEText("The certificate {}, is expiring on {:%d %b %Y}".format(application, valid_until))
  msg = MIMEText("Description: {}".format(description))
  msg = MIMEText("Application: {}".format(application))
  msg = MIMEText("Location: {}".format(location))
  msg = MIMEText("Issuer: {}".format(issuer))
  msg['Subject'] = 'Simple test message'
  server = smtplib.SMTP('localhost')
  server.set_debuglevel(True) # show communication with the server
  server.sendmail('admin@gmail.com', ['admin@gmail.com'], msg.as_string())
server.quit()
cursor.close()
cnx.close()

Как добавить этот результат в тело письма?

Я сливаюсь с этим сценарием

1 Ответ

0 голосов
/ 18 апреля 2020

Вы перезаписываете msg снова и снова; в конце он будет содержать только Issuer.

Проще использовать EmailMessage:

from email.message import EmailMessage
content = "The certificate {}, is expiring on {:%d %b %Y}\n".format(application, valid_until)
content += "Description: {}\n".format(description)
content += "Application: {}\n".format(application)
content += "Location: {}\n".format(location)
content += "Issuer: {}".format(issuer)
msg = EmailMessage()
msg.set_content(content)
msg["Subject"] = "Simple test message"
msg["From"] = "admin@gmail.com"
msg["To"] = "admin@gmail.com"
server = smtplib.SMTP('localhost')
server.set_debuglevel(True) # show communication with the server
server.send_message(msg)
...