Ejemplo n.º 1
0
def quotetext(form):
    """
    note that headers come from the prior page's form here,
    not from parsing the mail message again; that means that
    commonhtml.viewpage must pass along date as a hidden field
    """
    parser = mailtools.MailParser()
    addrhdrs = ('From', 'To', 'Cc', 'Bcc')              # decode name only
    quoted = '\n-----Original Message-----\n'
    for hdr in ('From', 'To', 'Date'):
        rawhdr = getfield(form, hdr)
        if hdr not in addrhdrs:
            dechdr = parser.decodeHeader(rawhdr)        # 3.0: decode for display
        else:                                           # encoded on sends
            dechdr = parser.decodeAddrHeader(rawhdr)    # email names only 
        quoted += '%s: %s\n' % (hdr, dechdr)
    quoted += '\n' + getfield(form, 'text')
    quoted =  '\n' + quoted.replace('\n', '\n> ')
    return quoted
Ejemplo n.º 2
0
def quotetext(form):
    """
	обратите внимание, что заголовки поступают из формы предыдущей страницы,
	а не получаются в результате повторного анализа почтового сообщения;
	это означает, что функция commonhtml.viewpage должна передавать дату
	в скрытом поле
	"""
    parser = mailtools.MailParser()
    addrhdrs = ('From', 'To', 'Cc', 'Bcc')  # декодируется только имя
    quoted = '\n-----Original Message-----\n'
    for hdr in ('From', 'To', 'Date'):
        rawhdr = getfield(form, hdr)
        if hdr not in addrhdrs:
            dechdr = parser.decodeHeader(
                rawhdr)  # 3.0: декодировать для отображения
        else:  # закодировать при отправке
            dechdr = parser.decodeAddrHeader(rawhdr)  # только имена в адресах
        quoted += '%s: %s\n' % (hdr, dechdr)
    quoted += '\n' + getfield(form, 'text')
    quoted = '\n' + quoted.replace('\n', '\n> ')
    return quoted
Ejemplo n.º 3
0
import loadmail, commonhtml
from externs import mailtools
from secret import encode  # user-defined encoder module
MaxHdr = 35  # max length of email hdrs in list

# only pswd comes from page here, rest usually in module
formdata = cgi.FieldStorage()
mailuser, mailpswd, mailsite = commonhtml.getstandardpopfields(formdata)

try:
    newmails = loadmail.loadmailhdrs(mailsite, mailuser, mailpswd)
    mailnum = 1
    maillist = []
    for mail in newmails:  # list of hdr text
        msginfo = []
        hdrs = mailtools.MailParser().parseHeaders(mail)  # email.Message
        for key in ('Subject', 'From', 'Date'):
            msginfo.append(hdrs.get(key, '?')[:MaxHdr])
        msginfo = ' | '.join(msginfo)
        maillist.append((
            msginfo,
            commonhtml.urlroot + 'onViewListLink.py',
            {
                'mnum': mailnum,
                'user': mailuser,  # data params
                'pswd': encode(mailpswd),  # pass in url
                'site': mailsite
            }))  # not inputs
        mailnum += 1
    commonhtml.listpage(maillist, 'mail selection list')
except:
Ejemplo n.º 4
0
    try:
        builtins.print(*args, end=end)
        sys.stdout.flush()
    except:
        for arg in args:
            bstdout.write(str(arg).encode('utf-8'))
        if end:
            bstdout.write(end.encode('utf-8'))
        bstdout.flush()


# FIXME комментировать временно
# sys.stderr = sys.stdout										# выводить сообщения об ошибках в браузер
from externs import mailconfig  # из пакета, находящегося на сервере
from externs import mailtools  # для анализа и дкодирования заголовков
parser = mailtools.MailParser()  # один парсер на процесс в этом модуле

# корневой каталог cgi-сценариев
# urlroot = 'http://starship.python.net/~lutz/PyMailCgi/'
# urlroot = 'http://localhost:8000/cgi-bin/'

urlroot = ''  # использовать минимальные относительные пути


def pageheader(app='PyMailCGI', color='#FFFFFF', kind='main', info=''):
    print('Content-type: text/html\n')
    print('<html lang="ru"><head><title>%s: %s page (PP4E)</title></head>' %
          (app, kind))
    print('<body bgcolor="%s"><h1>%s %s</h1><hr>' % (color, app,
                                                     (info or kind)))
Ejemplo n.º 5
0
def print(*args, end='\n'):
    try:
        builtins.print(*args, end=end)
        sys.stdout.flush()
    except:
        for arg in args:
            bstdout.write(str(arg).encode('utf-8'))
        if end: bstdout.write(end.encode('utf-8'))
        bstdout.flush()


sys.stderr = sys.stdout  # show error messages in browser
from externs import mailconfig  # from a package somewhere on server
from externs import mailtools  # need parser for header decoding

parser = mailtools.MailParser()  # one per process in this module

# my cgi address root
#urlroot = 'http://starship.python.net/~lutz/PyMailCgi/'
#urlroot = 'http://localhost:8000/cgi-bin/'

urlroot = ''  # use minimal, relative paths


def pageheader(app='PyMailCGI', color='#FFFFFF', kind='main', info=''):
    print('Content-type: text/html\n')
    print('<html><head><title>%s: %s page (PP4E)</title></head>' % (app, kind))
    print('<body bgcolor="%s"><h1>%s %s</h1><hr>' % (color, app,
                                                     (info or kind)))

Ejemplo n.º 6
0
3.0: выполняет декодирование заголовков перед отображением списка,
однако принтер и браузер должны уметь обрабатывать их;
# ---------------------------------------------------------------------------- #
"""

import cgi
import loadmail, commonhtml
from externs import mailtools
from secret import encode  # модуль шифрования, определяемый пользователем

MaxHdr = 35  # максимальная длина заголовков в списке

# с предыдущей страницы поступает пароль, остальное обычно в модуле
formdata = cgi.FieldStorage()
mailuser, mailpswd, mailsite = commonhtml.getstandardpopfields(formdata)
parser = mailtools.MailParser()

try:
    newmails = loadmail.loadmailhdrs(mailsite, mailuser, mailpswd)
    mailnum = 1
    maillist = []  # или использовать enumerate
    for mail in newmails:  # списко заголовков
        msginfo = []
        hdrs = parser.parseHeaders(mail)  # email.message.Message
        addrhdrs = ('From', 'To', 'Cc', 'Bcc')  # декодировать только имена
        for key in ('Subject', 'From', 'Date'):
            rawhdr = hdrs.get(key, '?')
            if key not in addrhdrs:
                dechdr = parser.decodeHeader(
                    rawhdr)  # 3.0: декодировать для отображения
            else:  # закодировать при отправке