Слияние писем (mail merge)

Когда нужно разослать одинаковое приглашение многим людям, тело сообщения меняется мало — обычно достаточно подставить имя (а иногда и адрес). Чтобы не писать каждое письмо вручную, применяют приём, который называется слиянием писем (mail merge): берётся шаблон тела письма, список имён, и для каждого имени формируется отдельное сообщение.

Что нужно знать

Перед изучением примера полезно понимать:

Пример. Слияние писем

# Python program to mail merger
# Names are in the file names.txt
# Body of the mail is in body.txt

# open names.txt for reading
with open("names.txt", 'r', encoding='utf-8') as names_file:

    # open body.txt for reading
    with open("body.txt", 'r', encoding='utf-8') as body_file:

        # read entire content of the body
        body = body_file.read()

        # iterate over names
        for name in names_file:
            mail = "Hello " + name.strip() + "\n" + body

            # write the mails to individual files
            with open(name.strip()+".txt", 'w', encoding='utf-8') as mail_file:
                mail_file.write(mail)

В этом примере все имена записаны в отдельных строках файла names.txt, а текст письма лежит в файле body.txt.

Оба файла открываются на чтение, после чего цикл for проходит по списку имён. Для каждого имени создаётся новый файл с именем вида [name].txt.

Метод /python-programming/methods/string/strip/index (strip()) убирает лишние пробелы и символы перевода строки в начале и конце строки — это важно, потому что при чтении файла построчно в каждую строку попадает символ \n. Готовый текст письма записывается в созданный файл методом write().