Слияние писем (mail merge)
Когда нужно разослать одинаковое приглашение многим людям, тело сообщения меняется мало — обычно достаточно подставить имя (а иногда и адрес). Чтобы не писать каждое письмо вручную, применяют приём, который называется слиянием писем (mail merge): берётся шаблон тела письма, список имён, и для каждого имени формируется отдельное сообщение.
Что нужно знать
Перед изучением примера полезно понимать:
Методы строк Python — методы строк
Работа с файлами Python — работа с файлами
Python: цикл for — цикл
for
Пример. Слияние писем
# 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().