2016-04-20 4 views
1

У меня есть этот скрипт python, который отправляет письма с использованием модуля smtplib.Как отправить почту в python

#! /usr/bin/python 

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

from1 = "root" 
to = "[email protected]" 
subject = "test mail" 

msg = MIMEMultipart() 
msg['From'] = from1 
msg['To'] = to 
msg['Subject'] = subject 

text = """Hi, 
This is test messgae""" 

html = """\ 
<html> 
    <head></head> 
    <body> 
    <p>Hi!<br> 
     How are you?<br> 
     Here is the <a href="http://www.python.org">link</a> you wanted. 
    </p> 
    </body> 
</html> 
""" 

fi = open("dragon.jpg", 'rb') 
img = MIMEImage(fi.read()) 
fi.close() 
msg.attach(img) 

part1 = MIMEText(text, 'plain') 
part2 = MIMEText(html, 'html') 
msg.attach(part1) 
msg.attach(part2) 

smtp_obj = smtplib.SMTP('rinacac-test.egi.ericsson.com') 
smtp_obj.sendmail(from1, to, msg.as_string()) 
smtp_obj.quit() 

Скрипт работает, но мой HTML содержание 'HTML' & изображение 'dragon.jpg' появляются в виде вложений. Я хочу, чтобы они отображались как содержимое моей почты, а не как вложения. Пожалуйста, помогите

Обновление: Я до сих пор не в состоянии понять, какую роль играет здесь многопользовательская/альтернативная игра. Кроме того, в рамках более ранней ссылки, которую вы разделили ниже, линия не отображается в письме.

msgText = MIMEText('This is the alternative plain text message.') 
msgAlternative.attach(msgText) 

Во-вторых объект 'msgText', который содержит строку HTML крепится с помощью '' msgAlnernative

msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>Nifty!', 'html') 
msgAlnernative.attach(msgText) 

но объект 'msgImage', который считывает изображение прикрепляется с 'msgRoot'. Почему это так ..

msgImage.add_header('Content-ID', '<image1>') 
msgRoot.attach(msgImage) 

Не удалось найти какой-либо вспомогательный документ по MIMEMultipart/related и alternative. Пожалуйста, помогите

+0

#!/usr/bin/perl не должно быть/usr/bin/python? И вы могли бы расшифровать изображение как строку base64 и поместить его в тег BigZ

+0

oops .. Я в основном работаю над perl;) .. В любом случае я запускал скрипт вроде «python script.py» .. :) – Geetika

+3

может помочь вы http://stackoverflow.com/questions/920910/sending-multipart-html-emails-which-contain-embedded-image –

ответ

1

Я думаю, что это решит вашу проблему How to display base64 images in html

Если mailprovider поддерживает HTML-теги в электронных письмах

Извините, так как это конкретный питон вопрос и примеры, приведенные в ссылке, кажется, PHP здесь python solution

import base64 
img = 'test.jpg' 
with open(img, 'rb') as imgfile: 
    img64 = base64.encodestring(imgfile.read()) 

### 

html = """\ 
<html> 
    <head></head> 
    <body> 
    <p>Hi!<br> 
     How are you?<br> 
     Here is the <a href="http://www.python.org">link</a> you wanted. 
    </p> 
    <img width="160" height="160" alt="tick" src="data:image/jpg;base64,{0}"> 
    </body> 
</html> 
""".format(img64) 

### 
Смежные вопросы