Автор оригинала: Pankaj Kumar.
Python Howto – отправка электронных пизов с помощью Python
Привет всем! В сегодняшней статье мы посмотрим, как мы можем использовать Python для отправки электронных писем.
Отправка электронных писем – краткий обзор
Обычно задача отправки электронных писем выполняется с использованием MTP (протокол передачи почты). В настоящее время существует отдельный протокол, называемый SMTP (простой протокол передачи почты), который является широко используемым протоколом для отправки электронных писем.
Этот протокол работает на клиент-серверной основе, похоже на любой другой. Когда мы хотим отправить электронное письмо на целевую машину, мы (клиент) необходимо отправить содержимое почты на SMTP-сервер. Сервер теперь будет направлять его на желаемую целевую машину.
Итак, чтобы отправить электронную почту, вам нужно использовать SMTP-сервер. Хотя у вас может быть пользовательский SMTP-сервер, мы будем использовать бесплатный SMTP-сервер Gmail для отправки электронных писем, используя Gmail!
Предварительная настройка для отправки электронных писем с Python
Прежде чем пройти через остальную часть этого учебника, я совет вам настроить учетную запись Game Gmail, которую вы можете использовать для тестирования отправки электронных писем.
После настройки учетной записи есть еще одна вещь, которую вам нужно сделать.
По умолчанию ваша учетная запись Gmail не настроена, чтобы разрешить доступ от менее безопасных приложений, таких как SMTP. Нам нужно включить этот доступ для нашего аккаунта.
Вы можете пойти в Страница конфигурации учетной записи Gmail И включите доступ с вашей учетной записи Google.
Теперь вы готовы отправлять электронные письма с помощью Python! Давайте двигаться дальше.
Отправить электронные письма с помощью Python SMTP
У Python есть клиентская библиотека SMTP ( SMTPLIB
), которую он будет использовать для отправки электронных писем на SMTP-сервер (Gmail).
Это часть стандартной библиотеки, поэтому вы можете напрямую импортировать его!
import smtplib
Хорошо, теперь, давайте попробуем написать скрипт, чтобы отправить тестовую электронную почту.
Любое электронное письмо с использованием SMTP должно иметь следующее содержимое:
- Адрес отправителя
- Адрес приемника
- Предмет (необязательно)
- Тело почты
Давайте напишем все из них.
import smtplib sender_address = "sender@gmail.com" # Replace this with your Gmail address receiver_address = "receiver@gmail.com" # Replace this with any valid email address account_password = "xxxxxxxxxx" # Replace this with your Gmail account password subject = "Test Email using Python" body = "Hello from AskPython!\n\nHappy to hear from you!\nWith regards,\n\tDeveloper" # Endpoint for the SMTP Gmail server (Don't change this!) smtp_server = smtplib.SMTP_SSL("smtp.gmail.com", 465) # Login with your Gmail account using SMTP smtp_server.login(sender_address, account_password) # Let's combine the subject and the body onto a single message message = f"Subject: {subject}\n\n{body}" # We'll be sending this message in the above format (Subject:...\n\nBody) smtp_server.sendmail(sender_address, receiver_address, message) # Close our endpoint smtp_server.close()
Убедитесь, что вы замените sender_address
, приемник_address
и account_password
С вашей учетной записью Gmail!
Что мы делаем, это то, что мы используем SMTP-сервер для доступа к нашей учетной записи Gmail, используя безопасный SMTP ( SMTP_SSL
). После входа в систему мы можем напрямую отправить сообщение для ресивера, используя smtp_server.sendmail ()
!
Теперь, если вы введете тот же аккаунт для отправителя и получателя, вы получите электронное письмо с моим.
Давайте проверим содержимое.
Действительно, мы только что отправили правильное письмо с помощью Python!
Вы можете улучшить код, чтобы гарантировать, что ресурсы всегда закрыты, используя контекстные менеджеры.
import smtplib sender_address = "sender@gmail.com" # Replace this with your Gmail address receiver_address = "receiver@gmail.com" # Replace this with any valid email address account_password = "xxxxxxxxxx" # Replace this with your Gmail account password subject = "Test Email using Python" body = "Hello from AskPython!\n\nHappy to hear from you!\nWith regards,\n\tDeveloper" # We can use a context manager with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp_server: # Login with your Gmail account using SMTP smtp_server.login(sender_address, account_password) # Let's combine the subject and the body onto a single message message = f"Subject: {subject}\n\n{body}" # We'll be sending this message in the above format (Subject:...\n\nBody) smtp_server.sendmail(sender_address, receiver_address, message)
Это даст те же результаты, что и раньше – другое письмо!
Заключение
В этой статье мы смотрели, как мы могли бы использовать Python, чтобы легко отправлять электронные письма, используя SMTP-сервер Gmail.
Рекомендации
- Python SMTP Документация