🐍 Как отправить электронное письмо с помощью python на Linux

Как отправлять email через python

by itisgood

Если вы не программист, не волнуйтесь, вам не нужно быть экспертом, чтобы понять скрипт, который мы рассмотрим в этой статье.

Использование Python для написания скриптов

Использование Python для написания сценариев – популярный и практичный выбор.

Синтаксис Python прост, что позволяет быстро писать и понимать скрипты.

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

Скрипт Python для отправки электронной почты

Сначала создайте новый файл с расширением .py

# vi sending_mail.py

Вот пример скрипта python, который мы тестировали для отправки электронной почты:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# Email конфигурация
sender_email = "your_email@gmail.com"
receiver_email = "recipient_email@example.com"
subject = "Subject of the email"
body = "Body of the email"

# Создайте сообщение электронной почты
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject

# Прикрепите тело письма
message.attach(MIMEText(body, "plain"))

# Подключитесь к SMTP-серверу (пример Gmail).smtp_server = "smtp.gmail.com"
smtp_port = 25

with smtplib.SMTP(smtp_server, smtp_port) as server:
    # # Идентифицируйте себя на SMTP-сервере
    server.ehlo()

    # Отправка
    server.sendmail(sender_email, receiver_email, message.as_string())

print("Email sent successfully.")

Не забудьте внести необходимые изменения, чтобы добавить свою собственную конфигурацию.

Здесь мы используем порт 25, который традиционно используется для незашифрованных SMTP-соединений.

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

Поэтому, если ваш почтовый сервер поддерживает TLS, воспользуйтесь приведенным ниже скриптом.

📒 Как установить SendEmail на Linux

Скрипт Python для отправки электронной почты с использованием TLS

Чтобы защитить связь с smtp-сервером, используйте порт 587 вместо 25.

Порт 587 обычно используется для отправки электронной почты с поддержкой TLS (Transport Layer Security) или STARTTLS, который обеспечивает шифрование связи между почтовым клиентом (в данном случае вашим Python-скриптом) и почтовым сервером.

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

🔐 Как проверить поддерживаемые TLS и SSL алгоритмы (версии) на Linux

Вот пример использования Python для отправки электронной почты с TLS:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

#  Email конфигурация
sender_email = "your_email@gmail.com"
receiver_email = "recipient_email@example.com"
subject = "Subject of the email"
body = "Body of the email"

# Создайте сообщение электронной почты
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject

#  Прикрепите тело письма
message.attach(MIMEText(body, "plain"))

#  Прикрепите файл
attachment_file_path = "/path/to/your/file.txt"
attachment = open(attachment_file_path, "rb")

part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header(
    "Content-Disposition",
    f"attachment; filename= {attachment_file_path.split('/')[-1]}",
)
message.attach(part)

# Подключитесь к SMTP-серверу (в данном примере используется порт 25).
smtp_server = "smtp.gmail.com"
smtp_port = 587
smtp_username = "your_email@gmail.com"
smtp_password = "your_email_password"

with smtplib.SMTP(smtp_server, smtp_port) as server:
    # Start TLS for security
    server.starttls()

    # Вход на сервер
    server.login(smtp_username, smtp_password)
    server.sendmail(sender_email, receiver_email, message.as_string())

print("Email with attachment sent successfully.")

В этом случае вам нужно будет ввести имя пользователя и пароль для входа на smtp-сервер.

Спонсор этой статьи – наши партнеры пампаду

You may also like

Leave a Comment