Python: файл конфигурации содержимого электронной почты - PullRequest
0 голосов
/ 04 января 2012

Я хотел бы иметь возможность иметь файл конфигурации с ассортиментом содержимого для отправки по почте.Каждое письмо должно содержать тему и тело с новыми строками.

Например:

[Message_One]
Subject: Hey there
Body: This is a test
      How are you?
      Blah blah blah

      Sincerely,
      SOS

[Message_Two]
Subject: Goodbye
Body: This is not a test
      No one cares
      Foo bar foo bar foo bar

      Regards

Как мне заставить это работать с Python как файл конфигурации для случайного выборамежду контентом и / или захватить его по определенному имени (Message_One, Message_Two)?

Спасибо

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Может быть так:

from ConfigParser import ConfigParser
import random

conf = ConfigParser()
conf.read('test.conf')

mail = random.choice(conf.sections())
print "mail: %s" % mail
print "subject: %s" % conf.get(mail, 'subject')
print "body: %s" % conf.get(mail, 'body')

Это просто вопрос выбора случайного имени раздела с помощью random.choice(conf.sections()).Функция random.choice выберет случайный элемент из последовательности - метод sections вернет все имена разделов, то есть ["Message_One", "Message_Two"].Затем вы используете это имя раздела, чтобы получить другие нужные вам значения.

1 голос
/ 04 января 2012
#!/usr/bin/env python3
from re import match
from collections import namedtuple
from pprint import pprint
from random import choice

Mail = namedtuple('Mail', 'subject, body')

def parseMails(filename):
    mails = {}
    with open(filename) as f:
        index = ''
        subject = ''
        body = ''
        for line in f:
            m = match(r'^\[(.+)\]$', line)
            if m:
                if index:
                    mails[index] = Mail(subject, body)
                index = m.group(1)
                body = ''
            elif line.startswith('Subject: '):
                subject = line[len('Subject: '):-1]
            else:
                body += line[len('Body: '):]
        else:
            mails[index] = Mail(subject, body)
    return mails

mails = parseMails('mails.txt')
index = choice(list(mails.keys()))
mail = mails[index]
pprint(mail)

Mail(subject='Goodbye', body='This is not a test\nNo one cares\nFoo bar foo bar foo bar\nRegards\n')
  • парсинг писем
  • случайный выбор одного письма
...