🐍 Python скрипт для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ элСктронного письма Ρ‡Π΅Ρ€Π΅Π· SMTP-сСрвСр

Python с Π΅Π³ΠΎ ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ экосистСмой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ позволяСт Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ элСктронных писСм с использованиСм простого ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹ (SMTP).

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим процСсс создания скрипта Python для ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями Π½Π° основС сСрвСра SMTP, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ элСктронныС письма.

1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² SMTP ΠΈ Python

SMTP – это стандартный ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹.

Он опрСдСляСт процСсс, посрСдством ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сообщСния элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python smtplib ΠΈ email ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ простой Π² использовании интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с SMTP-сСрвСрами ΠΈ создания ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… сообщСний.

 

2. Установка Python ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² вашСй систСмС установлСн Python 3.6 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ вСрсии.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта Python.

НСобходимыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, smtplib ΠΈ email, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ установки.

 

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-содСрТимоС ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ влоТСния Π² наши элСктронныС письма.

Π­Ρ‚ΠΈ знания ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… скриптах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ², ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±ΡŽΠ»Π»Π΅Ρ‚Π΅Π½Π΅ΠΉ.

Как всСгда, Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ ΠΈ ΡƒΠ²Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ прСдпочтСния ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ элСктронных писСм.

Π”Ρ€ΡƒΠ·ΡŒΡ ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ этому ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ ΡΡ‚Π°Ρ‚ΡŒ доступнСС Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях.

НС ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈ ΠΌΠΈΠΌΠΎ ΠΆΠΌΠ°ΠΊΠ½ΠΈ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΡƒ Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½!