Как отправлять автоматические сообщения электронной почты в Python
Программирование

Как отправлять автоматические сообщения электронной почты в Python

Хотите узнать, как создать свой собственный настраиваемый почтовик на Python с использованием SMTP? Смотрите дальше

Хотя коммерческие почтовые клиенты предлагают удобство дружественного графического интерфейса, им часто не хватает гибкости и настраиваемости, которых желают многие разработчики или создатели контента для своих почтовых нужд

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

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

Что такое SMTP?

Проще говоря, SMTP, или Simple Mail Transfer Protocol, – это коммуникационный протокол для почтовых серверов для передачи электронной почты через Интернет

Он является составной частью прикладного уровня пакета TCP/IP, который представляет собой набор протоколов, используемых для связи через Интернет или другие подобные сети. В сети, где реализован SMTP, процесс, известный как store and forward , помогает перемещать почту по сети

На каждой конечной точке программное обеспечение, известное как Mail Transfer Agent (MTA), использует функцию хранения и пересылки для облегчения связи между участвующими серверами SMTP. Таким образом, основная роль SMTP заключается в том, чтобы диктовать, где и как почта перемещается из одной точки в другую в сети

Начало работы

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

Вы также можете использовать локальный отладочный SMTP-сервер для отправки тестовых писем, но сейчас мы будем использовать учетную запись электронной почты для отправки писем, поскольку это более интуитивно понятно

Можно просто использовать существующий аккаунт Gmail, но по мере того, как вы будете играть с вашей программой, он может быстро заполниться тестовыми письмами. Именно поэтому мы рекомендуем создать ‘запасной’ аккаунт для тестирования

Теперь включите опцию, позволяющую менее безопасным приложениям получать доступ к вашему аккаунту Gmail. Это еще одна причина для использования ‘запасного’ аккаунта, поскольку не рекомендуется играть с настройками конфиденциальности вашего основного аккаунта

Написание электронного письма на языке Python

Python 3 поставляется с предустановленным модулем под названием smtplib (сокращение от smtp library), который можно использовать для работы с SMTP-серверами

Как и любой другой модуль Python, первое, что вам нужно сделать, это импортировать smtplib

importsmtplib

Инициализация объекта SMTP

Теперь вы можете использовать smtplib для создания объекта SMTP, который предоставит вам большинство функций обычного почтового клиента. Однако функции объекта SMTP могут быть использованы только через методы экземпляра. Поэтому, естественно, следующим шагом будет объявление экземпляра объекта

mySMTP = smtplib.SMTP('smtp.google.com'

Это настраивает объект SMTP на отправку электронной почты с использованием SMTP-сервера Google

После этого мы указываем электронные адреса отправителя и получателя. Здесь пригодится учетная запись Gmail, которую вы создали ранее

emailSender = “senderMail@sender.com”
myThroaway ='myEmail@gmail.com'
emailRecipients = myThroaway

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

Написание сообщения

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

  • Данные отправителя.
  • Данные получателя.
  • Тема
  • Тело сообщения.
  • Эти поля заключаются в тройные кавычки и разграничиваются следующим образом:

    newEmail ='''From: From Person <senderMail@sender.com>
    To: To Person <my_email@gmail.com>
    Subject: Email Test
    Thisisthe body of the email.
    '''

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

    Наконец, мы можем использовать команду sendmail для отправки письма с вашего SMTP-сервера на сервер получателя

    mySMTP.sendmail(emailSender, emailRecipients, newEmail)

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

    Устранение неполадок в вашей программе электронной почты на Python

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

    Чтобы учесть такие возможности, вы можете использовать блок try-except и поместить подверженные ошибкам утверждения внутрь блока try. Вся ваша программа вместе с блоком try-except должна выглядеть примерно так:

    importsmtplib
    emailSender = “senderMail@sender.com”
    myThroaway = ‘my_email@gmail.com’
    emailRecipients = myThroaway
    newEmail ='''From: From Person <senderMail@sender.com>
    To: To Person <my_email@gmail.com>
    Subject: Email Test
    Thisisthe body of the email.
    '''
    try
       smtpObj = smtplib.SMTP(‘smtp.gmail.com’)
       mySMTP.sendmail(emailSender, emailRecipients, newEmail)
       print(“Email sent successfully!”)
    exceptSMTPException:
       print'Error: There was an error in sending your email.'

    Защита электронной почты

    Если вы собираетесь использовать Python в реальных условиях для отправки электронной почты, важно убедиться, что связь безопасна с обеих сторон

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

    Один из способов обойти эту проблему – использовать протокол TLS (Transport Layer Security) для шифрования связи. Это тот же протокол, который используется основными почтовыми клиентами, такими как Gmail и Outlook, чтобы ваши письма никогда не попали в чужие руки

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

    Первым шагом, конечно же, является импорт библиотеки ssl вместе с smtplib. Библиотека ssl дает вам возможность создать защищенный SSL-контекст и общаться по зашифрованной сети, подключаясь к определенным портам на обоих концах

    Безопасный SSL-контекст – это не что иное, как набор шифров, версий протоколов, доверенных сертификатов, опций TLS и расширений TLS

    После этого мы можем указать порт TLS и добавить несколько функций библиотеки ssl для создания безопасного почтовика

    Код со всеми внесенными изменениями выглядит следующим образом:

    importsmtplib, ssl.

    smtpServer ='smtp.gmail.com'
    port =587
    myEmail ='my_email@gmail.com'
    password ='my_password'
    #email and password can also be user input fields

    context = ssl.create_default_context().

    newEmail ='''From: From Person <senderMail@sender.com>
    To: To Person <my_email@gmail.com>
    Subject: Email Test
    Thisisthe body of the email.
    '''

    try
        server = smtplib.SMTP(smtpServer,port)
        server.starttls(context=context)
        server.login(newEmail, password).

    exceptExceptionase:
        print('the email could not be sent.'

    finally
        server.quit()

    Как и раньше, вы должны создавать и использовать экземпляр SMTP в блоке try-except, чтобы предотвратить внезапные сбои программы

    Что можно сделать с помощью этого скрипта Python

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

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

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

    Чтобы продолжить создавать крутые вещи с помощью кода, ознакомьтесь с нашим руководством по созданию собственного Telegram-бота на Python 3!

    Об авторе

    Алексей Белоусов

    Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

    Комментировать

    Оставить комментарий