【Python开发及测试】Python发送邮件

#-*- coding: UTF-8 -*-
#目的:发送普通文本和超文本邮件,并且把携带的附件显示在超文本文件中
#环境:同在163的服务器下发送和接收邮件

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

#初始化程序变量
servername = 'smtp.163.com'
username = '[email protected]'
password = '***********'
fromaddr = '[email protected]'
toaddr = '[email protected]'

#制作一个Multipart类型的容器,根据Multipart邮件格式添加不同段
msg = MIMEMultipart('mixed')
msg['Subject'] = 'test message'
msg['From'] = fromaddr
msg['To'] = toaddr
msg.preamble = 'This is a multi-part message in MIME format.'

#由于下面需要包含超文本和图片作为内嵌资源,所以这里需要related作参数生成一个message
msgRoot = MIMEMultipart('related')
msg.attach(msgRoot)

#同时包含文本和超文本,这里就需要alternative作为参数
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)

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

#为内嵌在超文本中的图片资源设置一个Content-ID
fp = open('Menu_001.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()

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

#把图片作为附件放在邮件中
msg.attach(msgImage)

smtp = smtplib.SMTP()
smtp.connect(servername, 25)
#要做ehlo验证,要不然服务器会认为是不安全邮件
smtp.ehlo_or_helo_if_needed()
smtp.login(username, password)
smtp.sendmail(fromaddr, toaddr, msg.as_string())
smtp.quit()

猜你喜欢

转载自blog.csdn.net/nitibu/article/details/49001121