Преобразование текстового файла CP1252 в Ascii для экспорта электронной почты с использованием Python - PullRequest
0 голосов
/ 07 марта 2019

Схожу с ума с этим. Я потратил несколько дней, пытаясь найти проблему.
Я удалил несколько веб-сайтов и объединил результаты в один текстовый файл. Когда я пытаюсь поместить этот файл в цепочку электронной почты SMTPLib, я получаю ошибку кодирования.

", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 156: invalid start byte

Вот мой код. В текстовом файле нет ничего особенного из того, что я могу сказать:

import requests, os, smtplib, codecs
from bs4 import BeautifulSoup
from email.mime.text import MIMEText


homeworkResults = open('homeworkResults.txt','r', encoding= 'utf-8')
homeworkContent = homeworkResults.read()
#homeworkContent.encode()
homeworkResults.close()

print("attempting email...")

smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login('someemail@gmail.com','Password')
smtpObj.sendmail('someemail@gmail.com' , 'anotheremail@gmail.com','Subject: Kids Homework Update\n\n ' + homeworkContent) 
smtpObj.quit()

1 Ответ

1 голос
/ 07 марта 2019

Работает после того, как я добавил codes. перед функцией open.

import requests, os, smtplib, codecs
from bs4 import BeautifulSoup
from email.mime.text import MIMEText


homeworkResults = codecs.open('homeworkResults.txt','r', encoding= 'utf-8', errors='ignore')
homeworkContent = homeworkResults.read()
#homeworkContent.encode()
homeworkResults.close()

print("attempting email...")

smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login('someemail@gmail.com','Password')
smtpObj.sendmail('someemail@gmail.com' , 'anotheremail@gmail.com','Subject: Kids Homework Update\n\n ' + homeworkContent) 
smtpObj.quit()
...