Автор оригинала: FreeCodeCapm Team.
Арджун Кришна Бабу
Как учебное упражнение, я недавно выкопал в Python 3, чтобы увидеть, как я мог бы устрелить кучу электронных писем. Там могут быть более простые методы выполнения этого в производственной среде, но следующее работало для меня.
Итак, вот сценарий: у вас есть имена и адреса электронной почты куча контактов. И вы хотите отправить сообщение каждому из этих контактов, при добавлении «Уважаемое [Имя]» в верхней части сообщения.
Для простоты вы можете хранить контактные данные в файле, а не в базе данных. Вы также можете хранить шаблон сообщения, который вы хотите отправить в файл.
smtplib Модуль Python в основном все, что вам нужно отправлять простые электронные письма, без какой-либо строки темы или такой дополнительной информации. Но для реальный Электронные письма, вам нужна линейная линия и много информации – возможно, даже фотографии и вложения.
Это где Python’s Пакет электронной почты входит. Имейте в виду, что невозможно отправить сообщение электронной почты, используя Email
пакет один. Вам нужна комбинация обоих Email
и smtplib
Отказ
Обязательно проверьте всеобъемлющую официальную документацию для них обоих.
Вот четыре основных шага для отправки электронных питье с помощью Python:
- Настройте SMTP-сервер и войдите в свою учетную запись.
- Создать
Mimemultipart
Объект сообщения и загрузить его соответствующими заголовками дляОт
,К
иТема
поля. - Добавьте ваше сообщение для сообщения.
- Отправьте сообщение, используя объект SMTP-сервера.
Теперь позвольте мне идти по всему процессу.
Допустим, у вас есть файл контактов mycontacts.txt
следующим образом:
user@computer ~ $ cat mycontacts.txt john johndoe@example.com katie katie2016@example.com
Каждая строка представляет один контакт. У нас есть имя, сопровождаемое адрес электронной почты. Я храним все в нижнем регистре. Я оставлю это на логике программирования, чтобы преобразовать любые поля в верхний регистр или приложение, если это необходимо. Все это довольно легко в Python.
Далее у нас есть файл шаблона сообщения message.txt
Отказ
user@computer ~ $ cat message.txt Dear ${PERSON_NAME}, This is a test message. Have a great weekend! Yours Truly
Обратите внимание на слово ” $ {person_name}
“? Это Шаблон строки в питоне. Шаблонные строки могут быть легко заменены другими строками; В этом примере $ {Person_name}
собирается заменить фактическое имя человека, как вы увидите в ближайшее время.
Теперь давайте начнем с кода Python. Во-первых, нам нужно прочитать контакты из mycontacts.txt
файл. Мы могли бы также обобщить эту бит в свою функцию.
Функция get_contacts ()
принимает имя файла в качестве аргумента. Он откроет файл, прочитал каждую строку (I.E., каждый контакт), разделите его на имя и адрес электронной почты, а затем добавить их в два отдельных списка. Наконец, два списка возвращаются из функции.
Нам также нужна функция для чтения в файле шаблона (например Message.txt
) и вернуть Шаблон
объект, сделанный из его содержимого.
Как и предыдущая функция, это принимает имя файла в качестве аргумента.
Чтобы отправить электронную почту, вам нужно использовать SMTP (простой протокол передачи почты) Отказ Как упоминалось ранее, Python предоставляет библиотеки для обработки этой задачи.
В приведенном выше фрагменте кода вы импортируете smtplib
а затем создать SMTP-экземпляр который инкапсулирует SMTP-соединение. Требуется в качестве параметра адреса хоста и номер порта, которые оба из которых полностью зависит от настроек SMPT вашего конкретного поставщика услуг электронной почты. Например, в случае Outlook линия 4 выше будет:
s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587)
Вы должны использовать адрес хоста и номер порта вашего конкретного поставщика услуг электронной почты для всего этого для работы.
My_address
и Пароль
Выше составляют две переменные, которые удерживают полный адрес электронной почты и пароль учетной записи, который вы собираетесь использовать.
Теперь будет хорошее время для получения контактной информации и шаблоны сообщений, используя функции, которые мы определены выше.
names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt')
Теперь для каждого из этих контактов давайте отправим письмо отдельно.
Для каждого Имя
и Email
(Из файла контактов) вы создаете Mimemultipart Объект, настройка От
, К
, Тема
Заголовки типа содержимого в качестве словаря ключевых слов, а затем прикрепление тела сообщения к Mimemultipart
объект как простой текст. Возможно, вы захотите прочитать документацию, чтобы узнать больше о других типах MIME, с которыми вы можете поэксперировать.
Также обратите внимание, что на линии 10 выше, я заменяю $ {Person_name}
С фактическим именем извлечена из файла контактов с использованием Механизм шаблонов в Python Отказ
В этом конкретном примере я удаляю Mimemultipart
Объект и повторное создание его каждый раз, когда вы повторяете петлю.
Как только это сделано, вы можете отправить сообщение с помощью удобства send_message () Функция объекта SMTP, который вы создали ранее.
Вот полный код:
Там вы идете! Я верю, что код сейчас довольно четко.
Не стесняйтесь копировать и настраивать его по мере необходимости.
Помимо официальных документов Python, я бы также хотел бы упомянуть Этот ресурс что мне очень помогло.
Счастливое кодирование:)
Я изначально опубликовал эту статью здесь Отказ Если вам понравилась эта статья, нажмите на маленькое сердце ниже. Спасибо!