Как отправлять автоматические сообщения электронной почты на Python
В то время как коммерческие почтовые клиенты предлагают удобство удобного графического интерфейса, им часто не хватает гибкости и настраиваемости, которые многие разработчики или создатели контента желают для своих нужд электронной почты.
Будь то отправка благодарственного письма новому подписчику в вашем канале в социальных сетях или добавление функции электронной почты в ваш последний проект, возможность отправлять автоматические сообщения с помощью SMTP в Python – это то, что обязательно пригодится.
Читайте дальше, чтобы узнать, как сегодня запустить на вашем компьютере скрипт Python для отправки электронных писем.
Что такое SMTP?
Проще говоря, SMTP или простой протокол передачи почты – это протокол связи для почтовых серверов для передачи электронной почты через Интернет.
Это неотъемлемая часть прикладного уровня пакета TCP / IP, который представляет собой набор протоколов, используемых для связи через Интернет или другие аналогичные сети. В сети, где реализован SMTP, процесс, известный как сохранение и пересылка, помогает перемещать почту по сети.
На каждой конечной точке программное обеспечение, известное как агент передачи почты (MTA), использует функцию хранения и пересылки для облегчения связи между участвующими SMTP-серверами. Таким образом, основная роль SMTP – просто указывать, где и как почта перемещается из одной точки в другую в сети.
Начиная
У вас должна быть учетная запись электронной почты для отправки электронных писем с помощью этой программы. Это потому, что мы будем использовать SMTP-службу почтового клиента для отправки электронных писем. В этом руководстве мы будем использовать Gmail.
Вы также можете использовать локальный сервер отладки SMTP для отправки тестовых писем, но пока мы будем использовать учетную запись электронной почты для отправки писем, поскольку это более интуитивно понятно.
Можно просто использовать существующую учетную запись Gmail, но когда вы поиграете со своей программой, она может скоро заполниться тестовыми электронными письмами. Вот почему мы рекомендуем создать «одноразовую» учетную запись для тестирования.
Теперь включите параметр, чтобы разрешить менее безопасным приложениям доступ к вашей учетной записи Gmail. Это еще одна причина использовать одноразовую электронную почту, поскольку не рекомендуется экспериментировать с настройками конфиденциальности вашего основного адреса электронной почты.
Написание электронной почты на Python
Python 3 поставляется с предустановленным модулем smtplib (сокращение от smtp library), который можно использовать для работы с SMTP-серверами.
Как и любой другой модуль Python, первое, что вам нужно сделать, это импортировать smtplib.
import smtplib
Инициализация объекта SMTP
Теперь вы можете использовать smtplib для создания объекта SMTP, который предоставит вам большую часть функциональности обычного почтового клиента. Однако функции объекта SMTP можно использовать только через методы экземпляра. Итак, естественно, следующим шагом будет объявление экземпляра объекта.
mySMTP = smtplib.SMTP("smtp.google.com")
Это настраивает объект SMTP для отправки электронных писем с помощью SMTP-сервера Google.
После этого мы указываем емейлы отправителя и получателя. Здесь вам пригодится созданная вами ранее учетная запись Gmail.
emailSender = “[email protected]”
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
Здесь следует отметить, что список получателей на самом деле является массивом, а это означает, что он предназначен для хранения неатомарных значений. В результате вы даже можете указать в этом поле весь список рассылки!
Написание сообщения
Возможно, это самая простая часть процесса, здесь вам нужно ввести значения, которые вы обычно добавляете при составлении нового электронного письма. Это включает в себя:
- Реквизиты отправителя
- Реквизиты получателя
- Предмет
- Тело сообщения
Эти поля заключены в тройные кавычки и разграничены следующим образом:
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
Отправка электронного письма
Наконец, мы можем использовать команду sendmail для отправки почты с вашего SMTP-сервера на сервер получателя.
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
Остался только один последний шаг: реорганизация кода для предотвращения любых предсказуемых сбоев программы.
Устранение неполадок в вашей программе электронной почты Python
Иногда ваш SMTP-сервер может не установить соединение с сервером получателя или может возникнуть проблема с отправкой электронного письма с одного порта SMTP на другой. В таком случае ваша программа может неожиданно аварийно завершить работу.
Чтобы учесть такие возможности, вы можете использовать блок try-except и поместить подверженные ошибкам операторы внутри блока try . Вся ваша программа вместе с блоком try-except должна выглядеть примерно так:
import smtplib
emailSender = “[email protected]”
myThroaway = '[email protected]'
emailRecipients = [myThroaway]
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
try:
smtpObj = smtplib.SMTP('smtp.gmail.com')
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
print (“Email sent successfully!”)
except SMTPException:
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 для создания защищенного почтового отправителя.
Код со всеми внесенными изменениями выглядит примерно так:
import smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "[email protected]"
password = "my_password"
#email and password can also be user input fields
context = ssl.create_default_context()
newEmail = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Email Test
This is the body of the email.
"""
try:
server = smtplib.SMTP(smtpServer,port)
server.starttls(context=context)
server.login(newEmail, password)
except Exception as e:
print("the email could not be sent.")
finally:
server.quit()
Как и раньше, вы должны создать и использовать экземпляр SMTP в блоке try-except, чтобы предотвратить любые внезапные сбои программы.
Что вы можете сделать с помощью этого скрипта Python
Теперь, когда вы освоили удивительный и удивительно полезный навык автоматизации электронной почты с помощью кода, вы можете применить его к любой платформе, которая требует отправки электронных писем в различные списки рассылки.
От использования его на вашем личном веб-сайте для отправки автоматических электронных писем с подтверждением до использования его для отправки рождественских открыток или приглашений по электронной почте вашей семье и друзьям, использование этого небольшого скрипта Python ограничено только вашим собственным творчеством.
Кроме того, это лишь одна из многих замечательных вещей, которые вы можете делать с Python. Благодаря повсеместной поддержке разработчиков и простому в освоении синтаксису овладение навыками Python никогда не было таким простым.
Чтобы продолжить создание крутых вещей с помощью кода, ознакомьтесь с нашим руководством о том, как создать своего собственного бота Telegram с Python 3 !