Я новичок в Python, и у меня была задача отправить несколько электронных писем с соответствующими вложениями.Я выделю его, папка содержит несколько файлов PDF, каждый файл содержит некоторый текст, включая идентификатор электронной почты. Мне нужно прочитать идентификатор электронной почты из каждого файла PDF и отправить тот же файл, что и вложение к mailid в файле PDF.ниже приведен код для справки
# Get the count of files in the folder
import os
import re
global str
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
cpt = sum([len(files) for r, d, files in
os.walk("D:\MyOfficeDocuments\ADCB\PythonScripts\PdfFiles")])
#Reading Mail from each pdf file and send the same file as attachment to
these mails
import PyPDF2
from os import listdir
from os.path import isfile, join
from PyPDF2 import PdfFileWriter, PdfFileReader
mypath='D:\MyOfficeDocuments\ADCB\PythonScripts\PdfFiles'
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
for file in onlyfiles:
count = 1
while count <cpt:
os.chdir(r'D:\MyOfficeDocuments\ADCB\PythonScripts\PdfFiles')
pdfFileObj = open(file,'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
pageObj = pdfReader.getPage(0)
count +=1
text = pageObj.extractText()
email_user='madhugut82@gmail.com'
eline = re.findall('\S+@\S+.com', text)
email_send=eline
print(file)
password='harshi54537'
subject='Python !'
msg=MIMEMultipart()
msg['From']=email_user
msg['To']=', '.join(email_send)
#listalink = " ".join(listalink)
msg['Subject']=subject
#print (email_send)
body='Hi there, sending this email from python using python scripting'
msg.attach(MIMEText(body,'plain'))
filename
='D:\MyOfficeDocuments\ADCB\PythonScripts\Destination\Document.txt'
attachment=open(file,'rb')
#print(attachment)
part=MIMEBase('application','pdf')
part.set_payload(attachment.read())
part.add_header('Content-Disposition',"attachement; filename="+file)
msg.attach(part)
#email.encoders.encode_base64(part)
print('x')
text=msg.as_string()
#text=msg.encode("utf8")
#text=msg.as_string().encode('utf-8','ignore')
#text=msg.as_string().encode('ascii','ignore')
server=smtplib.SMTP('smtp.gmail.com',587)
server.starttls()
server.login(email_user,password)
server.sendmail(email_user,email_send,text)
#server.sendmail(email_user,email_send,msg.encode("utf8"))
server.quit()
В соответствии с приведенным выше кодом, я получаю сообщение об ошибке, показанное ниже
msg = _fix_eols (msg) .encode ('ascii')
UnicodeEncodeError: кодек 'ascii' не может кодировать символы в позиции 559-562: порядковый номер не в диапазоне (128)
Но если я изменю код, как показано ниже для
text=ms.as_string().encode("UTF")
Я не получаю никакой ошибки, но в приложении отображается пустое
Пожалуйста, подскажите, где именно проблема и в чем заключается проблема с получением пустого вложения в формате PDF.
Я запрашиваю вас, если естьлюбое предложение кода, пожалуйста, предложите только для PDF-файла
Спасибо заранее Madhu