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

Автоматическая отправка электронных писем с помощью Python может значительно помочь вам оптимизировать ваши приложения. Я сделаю его кратким и понятным, поэтому давайте начнем с импорта некоторых библиотек Python.

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

В качестве следующего шага нам нужно написать функцию Python, которая будет обрабатывать весь процесс отправки электронной почты. И поскольку я очень "креативный" парень, я назову это send_email (). Функция имеет 4 аргумента:

  • email_recipient как строка
  • email_subject как строка
  • email_message как строка
  • расположение_вложения как строка (необязательный аргумент)
def send_email(email_recipient, email_subject, email_message, attachment_location = ''):

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

email_sender = ‘your_email_address@your_server.com’
msg = MIMEMultipart()
msg[‘From’] = email_sender
msg[‘To’] = email_recipient
msg[‘Subject’] = email_subject
msg.attach(MIMEText(email_message, ‘plain’))

Следующие несколько строк кода позволят нам правильно управлять вложениями файлов.

if attachment_location != '':
    filename = os.path.basename(attachment_location)
    attachment = open(attachment_location, "rb")
    part = MIMEBase('application', 'octet-stream')
    part.set_payload(attachment.read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', 
                    "attachment; filename= %s" % filename)
    msg.attach(part)

И самая последняя часть функции email_send () - это настройка SMPT-сервера Google Gmail и обработка передачи электронной почты. Для правильной работы вам просто нужно добавить данные для входа в строку кода ‘(server.login (‘ your_login_name ’,‘ your_login_password ’)

try:
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.login('your_login_name', 'your_login_password')
    text = msg.as_string()
    server.sendmail(email_sender, email_recipient, text)
    print('email sent')
    server.quit()
except:
    print("SMPT server connection error")
return True

Чтобы вам было еще проще, вот весь код с примером вызова функции, который вы можете использовать как простое копирование и вставку (не забудьте сначала ввести свои данные для входа в Gmail)

def send_email(email_recipient,
               email_subject,
               email_message,
               attachment_location = ''):

    email_sender = 'your_email_address@your_server.com'

    msg = MIMEMultipart()
    msg['From'] = email_sender
    msg['To'] = email_recipient
    msg['Subject'] = email_subject

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

    if attachment_location != '':
        filename = os.path.basename(attachment_location)
        attachment = open(attachment_location, "rb")
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(attachment.read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition',
                        "attachment; filename= %s" % filename)
        msg.attach(part)

    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.ehlo()
        server.starttls()
        server.login('your_login_name', 'your_login_password')
        text = msg.as_string()
        server.sendmail(email_sender, email_recipient, text)
        print('email sent')
        server.quit()
    except:
        print("SMPT server connection error")
    return True

send_email('[email protected]',
           'Happy New Year',
           'We love Google Gmail', 
           'C:\Postcard\NYE.gif')

Перед тем, как вы сможете начать использовать этот код, вам нужно будет сделать еще кое-что. Сервер Google Gmail обычно не позволяет использовать сторонние приложения (например, интерпретатор Python) в качестве настройки по умолчанию. Поэтому нам нужно внести некоторые изменения в настройки безопасности вашей учетной записи Gmail.

  • Войдите в свою консоль администратора Google.
  • На главной странице консоли администратора выберите «Безопасность», а затем «Небезопасные приложения».
  • Выберите настройку для менее безопасных приложений:
    Разрешить пользователям управлять своим доступом к менее безопасным приложениям
    Пользователи могут включать или отключать доступ к менее безопасным приложениям.

Как только вы активировали доступ через сторонние приложения, вы можете начать использовать функцию и наслаждаться свободой Python :-)