2017-12-29 15 views
0
from email.MIMEMultipart import MIMEMultipart 
from email.mime.application import MIMEApplication 
from email.mime.text import MIMEText 
from email.MIMEText import MIMEText 
from email.MIMEImage import MIMEImage 
from datetime import datetime 
import socket 
import email 
import smtplib 
import uuid 

class EmailSender: 
def __init__(self): 
    self.msgRoot = MIMEMultipart('related') 
    self.msgAlternative = MIMEMultipart('alternative') 
    self.msgRoot.attach(self.msgAlternative) 

def AddImage(self, fileName, title): 
    internalFileName = '%s-%s-%s' %(fileName, datetime.now().strftime('%Y%m%d%H%M%S'), uuid.uuid4()) 
    mimetext ='<p style="background-color:lightgrey;font-size:20px;font-weight:bold;font-family:Comic Sans MS">%s</p><br><img src="cid:%s"><br>' %(title, internalFileName) 
    msgText = MIMEText(mimetext, 'html') 
    self.msgAlternative.attach(msgText) 
    fp = open(fileName, 'rb') 
    msgImage = MIMEImage(fp.read()) 
    fp.close() 
    msgImage.add_header('Content-ID', '<%s>' %(internalFileName)) 
    self.msgRoot.attach(msgImage) 

def AddFile(self, fileName): 
    fg = open(fileName, 'rb') 
    fA = MIMEApplication(fg.read(), Name=fileName) 
    fA['Content-Disposition'] = 'attachment; filename="%s"' %fileName 
    self.msgRoot.attach(fA) 

これは結果メールaddImage()に画像を追加するためのコードです。しかし、私が複数回AddImage()を呼び出すと、最初の画像だけが結果の電子メールに表示されますか?pythonを使用して複数の埋め込み画像を電子メールに追加する方法

問題が見つかりましたか?

答えて

0

ソリューションがあることが判明:

def AddImage(self, fileName, title): 
    internalFileName = '%s-%s-%s' %(fileName, datetime.now().strftime('%Y%m%d%H%M%S'), uuid.uuid4()) 
    self.imgHtml +='<p style="font-size:15px;font-weight:bold;font-family:Comic Sans MS">%s</p><br><img src="cid:%s"><br>' %(title, internalFileName) 
    fp = open(fileName, 'rb') 
    msgImage = MIMEImage(fp.read()) 
    fp.close() 
    msgImage.add_header('Content-ID', '<%s>' %(internalFileName)) 
    self.msgRoot.attach(msgImage) 
def Send(self, toList): 
    msgText = MIMEText(self.imgHtml, 'html') 
    self.msgAlternative.attach(msgText) 
    self.msgRoot['Subject'] = 'Audience Ingestion Integrated Test Report @%s [%s]' %(datetime.now().strftime('%Y-%m-%d'), socket.gethostname()) 
    strFrom = '[email protected]' 
    self.msgRoot['From'] = strFrom 
    strTo = email.Utils.COMMASPACE.join(toList) 
    self.msgRoot['To'] = strTo 
    smtp = smtplib.SMTP('smtp1.dev.fwmrm.net', 25) 
    smtp.sendmail(strFrom, strTo, self.msgRoot.as_string()) 
    smtp.quit() 

ときAddImage()は、単に(のMimeMultipartにMIMEImageを添付し、HTML文字列に文字列を追加し、送信したときにことを意味する)、いくつかの呼び出しの後AddImage()の場合、HTML文字列から生成されたMIMETextをMIMEMultipartに添付します。

関連する問題