🐍 Python скрипт для отправки электронного письма через SMTP-сервер

Python с его обширной экосистемой библиотек позволяет легко создать скрипт для отправки электронных писем с использованием простого протокола передачи почты (SMTP).

В этой статье мы рассмотрим процесс создания скрипта Python для обмена сообщениями на основе сервера SMTP, что позволит вам с легкостью отправлять электронные письма.

1. Введение в SMTP и Python

SMTP – это стандартный интернет-протокол для передачи электронной почты.

Он определяет процесс, посредством которого сообщения электронной почты отправляются с одного почтового сервера на другой.

Библиотеки Python smtplib и email предоставляют простой в использовании интерфейс для работы с SMTP-серверами и создания почтовых сообщений.

2. Установка Python и необходимых библиотек

Чтобы начать работу, убедитесь, что в вашей системе установлен Python 3.6 или более поздней версии.

Вы можете скачать последнюю версию с официального сайта Python.

Необходимые библиотеки, smtplib и email, являются частью стандартной библиотеки Python и не требуют дополнительной установки.

🐍 Управление версиями Python с помощью pyenv

3. Настройка параметров сервера SMTP

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

  • адрес SMTP-сервера
  • Порт SMTP-сервера
  • Учетные данные для аутентификации (адрес электронной почты и пароль)

Популярные почтовые службы, такие как Gmail, Yahoo и Outlook, имеют адреса и порты своих SMTP-серверов в открытом доступе.

Для Gmail адрес сервера – smtp.gmail.com, а порт – 587.

Примечание: Некоторые поставщики услуг электронной почты могут потребовать включить “Менее безопасные приложения” или создать “Пароль приложения” для аутентификации. Для получения дополнительной информации обратитесь к документации поставщика услуг электронной почты.

4. Создание простого электронной почты

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

Вот пример:

import smtplib



from email.mime.text import MIMEText



from email.mime.multipart import MIMEMultipart



# Определение настроек электронной почты



smtp_server = 'smtp.gmail.com'



smtp_port = 587



email_address = 'you@gmail.com'



email_password = 'your-password'



# Создание письма



subject = 'Hello, World!'



body = 'This is a test email sent from a Python script.'



msg = MIMEMultipart()



msg['From'] = email_address



msg['To'] = 'recipient@example.com'



msg['Subject'] = subject



msg.attach(MIMEText(body, 'plain'))



# Отправка email



with smtplib.SMTP(smtp_server, smtp_port) as server:



    server.starttls()



    server.login(email_address, email_password)



    server.send_message(msg)



print('Email sent successfully!')

Замените email_address, email_password и recipient@example.com на ваш реальный адрес электронной почты, пароль и адрес электронной почты получателя соответственно.

5. Дополнение скрипта электронной почты вложениями и HTML-содержимым

Чтобы добавить вложения или HTML-содержимое в письмо, вы можете изменить скрипта следующим образом:

from email.mime.application import MIMEApplication

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.utils import COMMASPACE

import os



# Определение настроек электронной почты

smtp_server = 'smtp.gmail.com'

smtp_port = 587

email_address = 'you@gmail.com'

email_password = 'your-password'



# Создание сообщения электронной почты с содержимым HTML

subject = 'Hello, World!'

body = ('<h1>This is a test email sent from a Python script.</h1>'

'<p>It contains <strong>HTML content</strong> and an <em>attachment</em>.</p>')



msg = MIMEMultipart()

msg['From'] = email_address

msg['To'] = 'recipient@example.com'

msg['Subject'] = subject



msg.attach(MIMEText(body, 'html'))



# Add an attachment

attachment_path = 'example_file.pdf'

attachment_filename = os.path.basename(attachment_path)



with open(attachment_path, 'rb') as file:

attachment = MIMEApplication(file.read(), _subtype='pdf')

attachment.add_header('Content-Disposition', 'attachment', filename=attachment_filename)

msg.attach(attachment)



# Отправка почты

with smtplib.SMTP(smtp_server, smtp_port) as server:

server.starttls()

server.login(email_address, email_password)

server.send_message(msg)



print('Email sent successfully!')

В этом примере мы изменили переменную `body`, чтобы она содержала HTML-содержимое, и использовали `MIMEText(body, ‘html’)` для прикрепления HTML-содержимого к письму.

Чтобы добавить вложение, мы прочитали файл из указанного `attachment_path`, создали объект `MIMEApplication` и прикрепили его к письму.

Примечание: Не забудьте заменить `attachment_path` на фактический путь к файлу, который вы хотите прикрепить.

Заключение

В этой статье мы рассмотрели, как создать сценарий на Python для отправки электронных писем с помощью обмена сообщениями на основе SMTP-сервера.

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

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

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

см. также:



2023-04-18T08:43:47
Скрипты