Хотите узнать, как создать свой собственный настраиваемый почтовик на 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!
Комментировать