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

Начнем с импорта необходимых библиотек 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

Теперь мы создадим новую функцию, которая будет обрабатывать весь процесс отправки электронной почты. Функция send_email () имеет 3 аргумента: email_recipient в виде строки, email_subject как String и необязательный аргумент attachment_location как String.

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

Давайте добавим еще несколько строк внутри функции send_email (), чтобы мы могли определить содержание электронной почты.

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)

И самая последняя часть нашей функции Python - это фактическая передача электронного письма в Microsoft Outlook или SMTP-сервер Office365.

try:
    server = smtplib.SMTP('smtp.office365.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

Важно использовать правильные данные для входа, которые используются в приведенной выше функции server.login ().

А чтобы вам было проще, вот весь код Python, который вы можете просто скопировать и вставить. И если вы хотите использовать эту функцию в своем собственном коде. Вот пример вызова функции:
send_email ('[email protected] ',' Happy New Year ',' We love Outlook ',' C : \ Postcard \ NYE.gif ')

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


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.office365.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 Outlook', 
           'C:\Postcard\NYE.gif')