Python

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

Отправка электронного письма на Python
Отправка электронного письма - одна из самых распространенных задач, которые мне нужно выполнять в веб-приложениях и других проектах, которые я создаю. С Python это довольно просто и легко сделать. Даже когда нам нужно использовать некоторые предопределенные шаблоны, Python помогает нам заменять значения заполнителей фактическими данными, чтобы окончательное электронное письмо выглядело элегантно и наполнено деталями, что делает моего клиента счастливым.

В этом уроке я расскажу о сценарии, который использую для отправки электронных писем пользователям приложений, которые я создаю, и многому другому.

Что мы будем делать?

Мы создадим простую программу Python, которая будет делать следующее:

Эти моменты делают эту программу намного ближе к реальному использованию отправки электронных писем в ваших приложениях. Давайте начнем.

Файл для писем

Файл, содержащий электронные письма для пользователей, будет выглядеть так:

Шубхам Шубхам.код @ gmail.ком

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

Использование шаблона

Давайте также быстро определим шаблон, который мы будем использовать в нашем скрипте для замены значений:

Здравствуйте, $ PERSON_NAME,
Мы отправили это письмо с помощью модуля Python smtplib. Круто, верно?
Желаю яркого дня впереди!
Ваше здоровье

Мы использовали строку шаблона $ PERSON_NAME которое будет заменено именем человека, которое мы получим от пользователей.txt при отправке электронного письма.

Получение пользовательских данных из файла

Первым шагом к отправке электронной почты пользователю является определение того, куда мы хотим отправить электронные письма. Давайте напишем функцию Python, которая будет принимать имя файла и возвращать нам имена пользователей и идентификаторы электронной почты, на которые необходимо отправить электронные письма:

def get_users_data (имя_файла):
user_name = []
user_email = []
с open (file_name, mode = 'r', encoding = 'utf-8') как user_file:
для user_info в user_file:
имя пользователя.добавить (user_info.split () [0])
user_email.добавить (user_info.split () [1])
вернуть user_name, user_email

С помощью этой функции мы просто возвращаем имена пользователей и адреса электронной почты, которые получаем из файла.

Получение объекта шаблона

Теперь мы можем проанализировать наш шаблон и получить объект шаблона из созданного нами текстового файла:

def read_template (имя_файла):
с open (file_name, 'r', encoding = 'utf-8') как msg_template:
msg_template_content = msg_template.читать()
шаблон возврата (msg_template_content)

При этом мы вернем объект Template, который мы можем использовать для анализа содержимого файла и выполнения необходимых замен для строк шаблона, таких как имя пользователя.

Как происходит отправка электронной почты?

Теперь, когда мы готовы с дизайном шаблона и данными пользователя, нам нужно понять, как электронное письмо на самом деле отправляется пользователю:

Настройка SMTP-соединения

Давайте наконец определим функцию, которая будет отправлять электронное письмо указанным пользователям. Вот функция:

def main ():
user_name, user_email = get_users_data ('пользователи.txt ') # читать данные пользователя
message_template = read_template ('сообщение.текст')
# настраиваем SMTP-сервер
smtplib_server = smtplib.SMTP (хост = 'smtp.Gmail.com ', порт = 587)
smtplib_server.starttls ()
smtplib_server.войти (SEND_FROM, EMAIL_PWD)
# Получите подробную информацию о каждом пользователе и отправьте электронное письмо:
для имени, адрес электронной почты в zip (имя_пользователя, адрес_пользователя):
multipart_message = MIMEMultipart () # создать сообщение
# добавить настоящее имя человека в шаблон сообщения
msg = шаблон_сообщения.заменить (PERSON_NAME = имя.заглавие())
# Распечатывает тело сообщения ради нас
печать (сообщение)
# настраиваем параметры сообщения
multipart_message ['От'] = SEND_FROM
multipart_message ['Кому'] = электронная почта
multipart_message ['Subject'] = "LinuxHint Email"
# добавить в тело сообщения
multipart_message.прикрепить (MIMEText (msg, 'plain'))
# отправляем сообщение через настроенный ранее сервер.
smtplib_server.send_message (multipart_message)
дель multipart_message
# Завершить сеанс SMTP и закрыть соединение
smtplib_server.покидать()

В приведенной выше функции мы следовали каждому шагу, указанному в предыдущем разделе. Мы создали SMTP-соединение и использовали его для отправки электронной почты.

Полная программа

В последнем разделе давайте посмотрим на полную программу, которую можно использовать для отправки электронного письма указанному пользователю:

импортировать smtplib
из шаблона импорта строки
из электронной почты.мим.multipart import MIMEMultipart
из электронной почты.мим.текст импорт MIMEText
SEND_FROM = 'мой-адрес электронной почты'
EMAIL_PWD = 'мой-пароль-здесь'
def get_users_data (имя_файла):
user_name = []
user_email = []
с open (file_name, mode = 'r', encoding = 'utf-8') как user_file:
для user_info в user_file:
имя пользователя.добавить (user_info.split () [0])
user_email.добавить (user_info.split () [1])
вернуть user_name, user_email
def read_template (имя_файла):
с open (file_name, 'r', encoding = 'utf-8') как msg_template:
msg_template_content = msg_template.читать()
шаблон возврата (msg_template_content)
def main ():
user_name, user_email = get_users_data ('пользователи.txt ') # читать данные пользователя
message_template = read_template ('сообщение.текст')
# настраиваем SMTP-сервер
smtplib_server = smtplib.SMTP (хост = 'smtp.Gmail.com ', порт = 587)
smtplib_server.starttls ()
smtplib_server.войти (SEND_FROM, EMAIL_PWD)
# Получите подробную информацию о каждом пользователе и отправьте электронное письмо:
для имени, адрес электронной почты в zip-архиве (имя_пользователя, адрес_пользователя):
multipart_message = MIMEMultipart () # создать сообщение
# добавить настоящее имя человека в шаблон сообщения
msg = шаблон_сообщения.заменить (PERSON_NAME = имя.заглавие())
# Распечатывает тело сообщения ради нас
печать (сообщение)
# настраиваем параметры сообщения
multipart_message ['От'] = SEND_FROM
multipart_message ['Кому'] = электронная почта
multipart_message ['Subject'] = "LinuxHint Email"
# добавить в тело сообщения
multipart_message.прикрепить (MIMEText (msg, 'plain'))
# отправляем сообщение через настроенный ранее сервер.
smtplib_server.send_message (multipart_message)
дель multipart_message
# Завершить сеанс SMTP и закрыть соединение
smtplib_server.покидать()
если __name__ == '__main__':
основной()

Когда мы запускаем эту программу с идентификатором Gmail, вы можете столкнуться с такой проблемой:

Ошибка SMTP Gmail


Это связано с тем, что Gmail не позволяет простым скриптам использовать Gmail API. Для этого вам, возможно, придется отключить безопасный вход в вашу учетную запись Gmail. О том, как это сделать для Gmail, читайте здесь.

Заключение

В этом уроке мы рассмотрели, как мы можем отправлять электронные письма с помощью Python smtplib модуль.

Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...
Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...