Найти - Пользователи
Полная версия: Как прочитать текст письма?
Начало » Network » Как прочитать текст письма?
1
spensor47
Доброго времени суток всем!
Пишу две программы. Первая - отсылает по нужным адресам письма с вложением, вторая прога - обрабатывает письма с вложениями (сохраняет вложения локально куда нужно). Проблема заключается в том, что не могу считать текст самого письма.

# -*- coding: cp1251 -*-

#--------------------------------------------------------------------------------------------------
# необходимые модули
#--------------------------------------------------------------------------------------------------
from smtplib import SMTP
import poplib, email
import os
import time
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.mime.image import MIMEImage
from email.Header import make_header as mkh
from email.Header import decode_header as dkh
from email.Utils import COMMASPACE, formatdate
from email import Encoders
from email import Charset
import socket, sys, getopt

#--------------------------------------------------------------------------------------------------
# информация по почтовым серверам
#--------------------------------------------------------------------------------------------------
inserver = 'pop3.mail.ru'
outserver = 'smtp.mail.ru'
username = username
userpass = userpass
fromuser = fromuser # от кого
touser = touser' #кому

#--------------------------------------------------------------------------------------------------

class cb_import:
def receive_mail(self):
con = poplib.POP3(inserver)
con.getwelcome()
con.user(username)
con.pass_(userpass)
response, lst, octets = con.list()
for msgnum, msgsize in [i.split() for i in lst]:
(resp, lines, octets) = con.retr(msgnum)
msgtxt = "\n".join(lines)+"\n\n"
msg = email.message_from_string(msgtxt)
msg_from = msg['from']
msg_to = msg['to']
msg_date = msg['date']
msg_subj = "".join([text for text,enc in dkh(msg['subject'])])
if msg_from == 'alaleck@mail.ru':
print "* От: %s\n* Кому: %s\n* Дата: %s\n* Тема: %s\n" % (msg_from,msg_to,msg_date,msg_subj)
msg_parts = [(part.get_filename(), part.get_payload(decode=True))
for part in msg.walk() if part.get_content_type() == 'application/octet-stream']
for name,data in msg_parts:
if name != None: # вложенный текстовый файл
print "Вложенный файл: "+name
f = file('D:\\3\\' + name,'wb')
f.write(data)
f.close()
else: # текст письма
print "Текст письма: "+str(data)
con.quit()

cb = cb_import()
cb.receive_mail()
как вывести текст письма? Или лучше как запиать в файл текст письма?
bw
> Проблема заключается в том, что не могу считать текст самого письма.
В чём именно проблема?
Что не так с print “Текст письма: ”+str(data)?

..bw
spensor47
если в письме только текст или только вложения, то всё нормально. А если в письме и текст и вложение, то выдаётся
......
r]ЌUЅТДJL`љЙад•Ъ4X—µКгVёуТG`UNvЃЃ]MµэµдAѓ эpA®©`ЉPX Н*HЮќwПD¶Чd¶!ЃQьB®я
......
Как, в случае если в письме и вложения и текст, считать текст сообщения?
spensor47
Получается, что никто не знает - как в письме, где есть вложения и текст - прочесть только текст письма?
Быть того не может….
pyuser
Content-Type у текста письма, как правило “text/plain”
qman
spensor47
Получается, что никто не знает - как в письме, где есть вложения и текст - прочесть только текст письма?
Быть того не может….
Проблему удалось решить?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB