Отправка электронной почты с помощью Python с использованием Outlook: подробное руководство

В современную цифровую эпоху программная отправка электронных писем может упростить выполнение различных задач — от автоматических уведомлений до массовых рассылок по электронной почте. В этой статье блога мы рассмотрим различные способы отправки электронных писем с помощью Python и Outlook, а также приведем примеры кода. Независимо от того, являетесь ли вы новичком или опытным разработчиком, это руководство предоставит вам полный обзор автоматизации электронной почты с помощью Python.

Метод 1: использование модуля smtplib
Модуль smtplib в Python обеспечивает простой способ отправки электронных писем с использованием простого протокола передачи почты (SMTP). Вот пример фрагмента кода, демонстрирующий отправку электронного письма с помощью Outlook:

import smtplib
def send_email(sender, receiver, subject, message):
    try:
        smtp_server = 'smtp.office365.com'
        port = 587
        username = 'your_username@outlook.com'
        password = 'your_password'
        server = smtplib.SMTP(smtp_server, port)
        server.starttls()
        server.login(username, password)
        email_body = f"Subject: {subject}\n\n{message}"
        server.sendmail(sender, receiver, email_body)
        server.quit()
        print("Email sent successfully!")
    except Exception as e:
        print("An error occurred while sending the email:", str(e))
# Usage
send_email('your_username@outlook.com', 'recipient@example.com', 'Hello', 'This is the email body.')

Метод 2. Использование REST API Outlook
Outlook предоставляет RESTful API, который позволяет программно взаимодействовать с вашим почтовым ящиком. Чтобы отправить электронное письмо с помощью API REST Outlook, вам необходимо пройти аутентификацию и выполнить запрос HTTP POST. Вот пример использования библиотеки requests:

import requests
def send_email_outlook_rest_api(sender, receiver, subject, message):
    try:
        endpoint = 'https://outlook.office.com/api/v2.0/me/sendmail'
        access_token = 'your_access_token'
        headers = {
            'Authorization': f'Bearer {access_token}',
            'Content-Type': 'application/json'
        }
        payload = {
            'Message': {
                'Subject': subject,
                'Body': {
                    'ContentType': 'Text',
                    'Content': message
                },
                'ToRecipients': [
                    {
                        'EmailAddress': {
                            'Address': receiver
                        }
                    }
                ]
            }
        }
        response = requests.post(endpoint, headers=headers, json=payload)
        if response.status_code == 202:
            print("Email sent successfully!")
        else:
            print("Failed to send email. Status code:", response.status_code)
    except Exception as e:
        print("An error occurred while sending the email:", str(e))
# Usage
send_email_outlook_rest_api('your_username@outlook.com', 'recipient@example.com', 'Hello', 'This is the email body.')

Метод 3. Использование библиотеки ExchangeLib
Библиотека Exchangelib предоставляет высокоуровневый интерфейс для взаимодействия с веб-службами Microsoft Exchange (EWS), которые используются Outlook. Это упрощает процесс отправки электронных писем с использованием Python. Вот пример:

from exchangelib import Account, Message, Mailbox, HTMLBody
def send_email_exchangelib(sender, receiver, subject, message):
    try:
        account = Account(
            primary_smtp_address='your_username@outlook.com',
            credentials=('your_username@outlook.com', 'your_password'),
            autodiscover=True
        )
        to_recipient = Mailbox(email_address=receiver)
        email = Message(account=account, subject=subject, body=HTMLBody(message), to_recipients=[to_recipient])
        email.send()
        print("Email sent successfully!")
    except Exception as e:
        print("An error occurred while sending the email:", str(e))
# Usage
send_email_exchangelib('your_username@outlook.com', 'recipient@example.com', 'Hello', 'This is the email body.')

В этой статье мы рассмотрели три различных метода отправки электронных писем с помощью Python и Outlook: использование модуля smtplib, API REST Outlook и библиотеки Exchangelib. Каждый метод имеет свои преимущества в зависимости от ваших конкретных требований. Используя эти методы, вы можете автоматизировать задачи по отправке электронной почты и повысить свою производительность.