Отправить почту используя Python и HTML - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь получить набор результатов из запроса SQL и добавить его в свой шаблон электронной почты, который представляет собой файл HTML.

Две функции:

Одна для сводки почты, а другая для изменения тела письма.

Я использую пакеты smtplib и email из python для отправки почты.

#send a email

from fileOps import fileOps
from dbOps import dbOps
import smtplib
from smtplib import SMTP, SMTPException
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

mailFrom = ''
password = ''
mailTo = ''
mailServer = 'smtp.gmail.com'
port = 587
s = smtplib.SMTP(mailServer,port)

#function for email summary 
def emailSummary():
    try:
        #security
        s.starttls()
        s.login(mailFrom,password)

        #for fetching all the records
        dbObj = dbOps()
        db = dbObj.connectDB()
        sql = "SELECT DISTINCT CASE_MASTER.AGREEMENTID, CASE_MASTER.NO_OF_FILES FROM " \
              "CASE_MASTER LEFT JOIN CASE_FILE_STATUS ON CASE_FILE_STATUS.MOVED_TO_AWS_FLAG = CASE_MASTER.MOVED_TO_AWS_FLAG " \
              "AND CASE_FILE_STATUS.MOVED_TO_AWS_Date AND CASE_MASTER.MOVED_TO_AWS_FLAG IS NOT NULL " \
              "WHERE CASE_FILE_STATUS.MOVED_TO_AWS_FLAG = 1 AND CASE_FILE_STATUS.MOVED_TO_AWS_Date IS NOT NULL"
        resultSet = dbObj.readData(db, sql)

        getEmailBody(resultSet)

        emailBody = getEmailBody(resultSet)
        s.sendmail(mailFrom, mailTo,emailBody)
        s.quit()
 #       print("Email Successfully sent !!! ")
    except smtplib.SMTPException as e :
        print(e)

#function to get emailBody 
def getEmailBody(resultSet):
    try:
        htmlTemplate = open('summaryTemplate.html', 'r')
        alert_msg = MIMEText(htmlTemplate.read(), "html", "utf-8")
        html = htmlTemplate.read()
        part1 = MIMEText(html, 'html')
        part2 = """<table>
                    % for r in resultSet:
                        <tr>
                            % for cell in r:
                                <td>${cell}</td>
                        % endfor</tr>
                    % endfor</table>""".format(**locals())

        msg = MIMEMultipart('alternative')
        msg['Subject'] = "HERO_FC_DM_DB"
        msg['From'] = mailFrom
        msg['To'] = mailTo
        msg.attach(part1)


    except Exception as e:
        print(e)

emailSummary()

Я получаю строку, но не получаю содержимое из этой строки

['81173'] 'cell'

 File "C:\Users\sailee.pawar\AppData\Local\Programs\Python\Python37-32\lib\smtplib.py", line 858, in sendmail
    esmtp_opts.append("size=%d" % len(msg))
'cell'
TypeError: object of type 'NoneType' has no len()

Я получаю вышеуказанную ошибку Traceback (самая последняяпоследний вызов): строка 68, в строке mailSummary () 37, в строке emailSummary s.sendmail (mailFrom, mailTo, emailBody) 858, в sendmail esmtp_opts.append ("size =% d"% len (msg)) 'cell'Ошибка типа: объект типа 'NoneType' не имеет len ()

expected  o/p :
['81173']
'file1.jpg'
'file2.txt'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...