В принцепе получилось.
Ниже пример кода
#! /usr/bin/python
# -*- coding: UTF-8 -*-
# импортирование модулей
#________________________________________________________________________________________________________________________
import re # системные
import os # системные
import psycopg2 # для pgsql базы
import psycopg2.extensions, logging # для pgsql базы
import datetime # для определения дат
import smtplib # модуль отправки почты
import email
from email.MIMEText import MIMEText # простое текстовое сообщение
from email.MIMEMultipart import MIMEMultipart # формирование сообщений из нескольких частей
from email.Utils import formatdate # форматирование даты
from email.Header import Header, make_header # форматирование заголовков письма
from email.Encoders import encode_base64 # модуль кодирования присоеденённых файлов
from email.MIMEBase import MIMEBase # модуль создания частей письма
from email.mime.application import MIMEApplication #
from email.mime.image import MIMEImage #
import mimetypes #
import sys #
reload(sys) #
sys.setdefaultencoding('utf-8') #
im = '???????????' # путь к какртинке
fil = open('???????','r+b') #
post = smtplib.SMTP('localhost') # сервер отправки почты
qw = re.split(" ",str(fil)) #
obj=qw[6][:-1] #
mesg = MIMEMultipart('mixed') #
img = MIMEBase("image","jpeg") #
iden = str(id(img)) #
mc = open('/u/test.html','r+b') #
ms = """\
<HTML>
<HEAD>
<FONT FACE="Times New Roman" SIZE=5 COLOR="#000000">
</HEAD>
<BODY>
<h4><p> текст письма </p></h4>
<BR><img image="jpeg" inline="inline" src="cid:%s" border=0>
<BR><p>еще текст</p>
</BODY>
</HTML>"""%(iden) #
mes = MIMEText(ms,"html","UTF-8") #
mesg.attach(mes) #
img.set_payload(fil.read()) #
encode_base64(img) #
fil.close() #
img.add_header('Content-Disposition', 'inline', filename=iden)
img.add_header('Content-ID',iden)
mesg.attach(img)
mc.close
fil.close()
admin = '????????????????' # учетка для отправки почты
tema = '???????????????' # тема письма
adres3 = '' # кому отправляем
mesg['Subject'] = Header(tema,'utf-8') # тема письма
mesg['From'] = admin # от кого
mesg['To'] = adres3 # кому
mesg['Date'] = formatdate(localtime=True) #
post.sendmail(admin,adres3, mesg.as_string()) #
post.quit() #
Если есть предложения по улучшению кода. Буду благодарен, т.к. не все почтовые программы хорошо принимают данное письмо.
Виндовые клиенты (Outluk и TheBat) отобразили письмо как положено, так же проводил проверку на Yandex и Mail