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)
这是我向email AddImage()结果添加图像的代码。但是当我多次调用AddImage()时,结果电子邮件中只显示第一个图像?在
你能帮忙找出问题吗?在
解决办法是:
这意味着,当AddImage()时,只需将MIMEImage附加到MIMEMultipart并将该字符串添加到html字符串;当Send()在多次调用AddImage()之后,将从html字符串生成的MIMEText附加到MIMEMultipart。在
这对我很有帮助。在
在我包含(循环)所有的
<img src="cid:%s">
使用msgAlternative.as_string()
并修复了这个问题之后,我发现这有帮助。问题是它如何只包括第一个图像,现在关系到我包括了多少个图像。在这段代码可以工作,但我也尝试在每个图像中添加文本,但我知道如何做到:
相关问题 更多 >
编程相关推荐