Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2010 11:53:08

wampir
От:
Зарегистрирован: 2010-08-27
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка почты

Доброво времени суток.

Требуется скрипт для отправки почты, в теле письма нужно вставить картинку.

Просто отправить письмо с 2-мя вложениями (текст и картинка) это я решил,
но такая версия не совсем то что нужно.
Но мне нужно что бы картинка приходила не вложением а в теле письма.



Офлайн

#2 Дек. 20, 2010 13:22:14

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка почты

wampir
Доброво времени суток.

Требуется скрипт для отправки почты, в теле письма нужно вставить картинку.

Просто отправить письмо с 2-мя вложениями (текст и картинка) это я решил,
но такая версия не совсем то что нужно.
Но мне нужно что бы картинка приходила не вложением а в теле письма.
Если так формируется задача — то это невозможно, т.к. нету никакой гарантии, что пользователь (получатель) получит письмо именно в таком виде.

Если вы точно знаете какой программой(или, например, Gmail) будет пользоваться получатель, то можно написать быдло-скрипт.



Офлайн

#3 Дек. 20, 2010 13:28:27

wampir
От:
Зарегистрирован: 2010-08-27
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка почты

Спасибо



Офлайн

#4 Дек. 27, 2010 14:17:26

wampir
От:
Зарегистрирован: 2010-08-27
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка почты

В принцепе получилось.
Ниже пример кода

#! /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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version