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

Возможный дубликат:
Как отправить вложения электронной почты с помощью python

У меня есть работа над sendEmail с помощью Python, я получаю этот код

import smtplib
def SendAnEmail( usr, psw, fromaddr, toaddr):
    # SMTP server
    server=smtplib.SMTP('smtp.gmail.com:587')
    server.starttls()
    server.login(usr,psw)
    # Send 
    msg="text message ....... "

    server.sendmail(fromaddr, toaddr, msg)
    server.quit()
if __name__ == '__main__':
    # Fill info...
    usr='[email protected]'
    psw='password'
    fromaddr= usr
    toaddr='[email protected]'
    SendAnEmail( usr, psw, fromaddr, toaddr)

если мне нужно добавить изображение (вложение изображения), как это сделать? у кого есть идея?

Ответ 1

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart


def SendMail(ImgFileName):
    img_data = open(ImgFileName, 'rb').read()
    msg = MIMEMultipart()
    msg['Subject'] = 'subject'
    msg['From'] = '[email protected]'
    msg['To'] = '[email protected]'

    text = MIMEText("test")
    msg.attach(text)
    image = MIMEImage(img_data, name=os.path.basename(ImgFileName))
    msg.attach(image)

    s = smtplib.SMTP(Server, Port)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login(UserName, UserPassword)
    s.sendmail(From, To, msg.as_string())
    s.quit()

Ответ 2

Прочитайте документы. Последние несколько строк документации smtpblib гласят:

Примечание. В общем, вы захотите использовать функции пакетов электронной почты для создания сообщения электронной почты, которое затем можно преобразовать в строку и отправить через sendmail(); см. электронную почту: примеры.

и указать вам: https://docs.python.org/3/library/email.examples.html

который имеет точный пример для этого.