Рубрики
Без рубрики

Отправить электронные письма с помощью Python

Автор оригинала: FreeCodeCapm Team.

Арджун Кришна Бабу

Как учебное упражнение, я недавно выкопал в Python 3, чтобы увидеть, как я мог бы устрелить кучу электронных писем. Там могут быть более простые методы выполнения этого в производственной среде, но следующее работало для меня.

Итак, вот сценарий: у вас есть имена и адреса электронной почты куча контактов. И вы хотите отправить сообщение каждому из этих контактов, при добавлении «Уважаемое [Имя]» в верхней части сообщения.

Для простоты вы можете хранить контактные данные в файле, а не в базе данных. Вы также можете хранить шаблон сообщения, который вы хотите отправить в файл.

smtplib Модуль Python в основном все, что вам нужно отправлять простые электронные письма, без какой-либо строки темы или такой дополнительной информации. Но для реальный Электронные письма, вам нужна линейная линия и много информации – возможно, даже фотографии и вложения.

Это где Python’s Пакет электронной почты входит. Имейте в виду, что невозможно отправить сообщение электронной почты, используя Email пакет один. Вам нужна комбинация обоих Email и smtplib Отказ

Обязательно проверьте всеобъемлющую официальную документацию для них обоих.

Вот четыре основных шага для отправки электронных питье с помощью Python:

  1. Настройте SMTP-сервер и войдите в свою учетную запись.
  2. Создать Mimemultipart Объект сообщения и загрузить его соответствующими заголовками для От , К и Тема поля.
  3. Добавьте ваше сообщение для сообщения.
  4. Отправьте сообщение, используя объект 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, я бы также хотел бы упомянуть Этот ресурс что мне очень помогло.

Счастливое кодирование:)

Я изначально опубликовал эту статью здесь Отказ Если вам понравилась эта статья, нажмите на маленькое сердце ниже. Спасибо!