тема smtplib не отображается, тема сообщения в сообщении - PullRequest
0 голосов
/ 11 мая 2018
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import pdb

def emailSender(emailId, password, input):
    fromaddr = emailId
    emailFile = open(input, "r")  # open the generated email file with read only access
    msgTxt = ""
    server = smtplib.SMTP('outbound.___.com')
    server.starttls()
    server.login(fromaddr, password)
    for line in emailFile:
        if line.__contains__("$to$"):
            toaddr = line[4:]
        elif line.__contains__("$cc$"):
            cc = line[4:]
        elif line.__contains__("$bcc$"):
            bcc = line[5:]
        elif line.__contains__("$subj$"):
            subject = line[6:]
        elif line.__contains__("$%$"):
            msg = MIMEMultipart()
            msg['From'] = fromaddr
            msg['To'] = toaddr
            subject = subject.encode('utf-8')
            msg['Subject'] = "hello world"
            msg['Cc'] = cc
            msg.attach(MIMEText(msgTxt, 'plain'))
            text = msg.as_string()
            server.sendmail(fromaddr, toaddr, text)
            msgTxt = ""
        elif not line.__contains__("--------------------------------------------------------------------"):
            msgTxt += line

    server.quit()


if __name__ == '__main__':
    password = "****"
    emailId = "****"
    input = "input"

    emailSender(emailId, password, input)

Общая цель - взять текстовый файл с электронной почтой, cc, темой и сообщением и отправить это письмо, сделав это для нескольких сгенерированных писем в текстовом файле.

Я читаю электронную почту из текстового файла msgTxt.Я также беру тему, toaddr & cc из текстового файла.Он отправляет электронное письмо с указанием на и с, но не показывает тему письма.Я попытался отладить файлы smtplib и ssl, но не могу понять.При отладке в msg все атрибуты установлены правильно, но не переносятся на электронную почту.Буду признателен за любую оказанную помощь.Я застрял на этом в течение некоторого времени.Спасибо за помощь в продвинутом.

- Биджан

1 Ответ

0 голосов
/ 11 мая 2018

Я выхожу на конечность здесь , но:

        msg['From'] = fromaddr
        msg['To'] = toaddr
        msg['Subject'] = "hello world"

... "fromaddr" происходит из кода, а не из файла.Итак, «субъект» - это первый ключ, который вы определяете после первого определяемого вами ключа, который приходит из текстового файла.

Предположим, что текстовые строки в файле имеют неправильный терминатор строк, и это добавляется к toaddr.Тогда с работы, потому что это жестко закодировано.Также To работает, потому что разделитель строки еще не произошел.Это происходит сразу после To.

Здесь вы оставляете два эквивалента терминатора строки, поэтому SMTP прекращает обработку заголовков, и тема теперь считается частью тела сообщения.

Для проверки попробуйте-кодирование "To" addr за один раз.Если это работает, вам нужно обрезать () строки, которые вы получаете из вашего файла.

...