Форум сайта python.su
Доброго времени суток всем!
Пишу две программы. Первая - отсылает по нужным адресам письма с вложением, вторая прога - обрабатывает письма с вложениями (сохраняет вложения локально куда нужно). Проблема заключается в том, что не могу считать текст самого письма.
# -*- 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()
Офлайн
> Проблема заключается в том, что не могу считать текст самого письма.
В чём именно проблема?
Что не так с print “Текст письма: ”+str(data)?
..bw
Офлайн
если в письме только текст или только вложения, то всё нормально. А если в письме и текст и вложение, то выдаётся
......
r]ЌUЅТДJL`љЙад•Ъ4X—µКгVёуТG`UNvЃЃ]MµэµдAѓэpA®©`ЉPX Н*HЮќwПD¶Чd¶!ЃQьB®я
......
Отредактировано (Авг. 22, 2011 14:00:17)
Офлайн
Получается, что никто не знает - как в письме, где есть вложения и текст - прочесть только текст письма?
Быть того не может….
Офлайн
Content-Type у текста письма, как правило “text/plain”
Офлайн
spensor47Проблему удалось решить?
Получается, что никто не знает - как в письме, где есть вложения и текст - прочесть только текст письма?
Быть того не может….
Офлайн