Пишу две программы. Первая - отсылает по нужным адресам письма с вложением, вторая прога - обрабатывает письма с вложениями (сохраняет вложения локально куда нужно). Проблема заключается в том, что не могу считать текст самого письма.
# -*- 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()