目录

上一个主题

7.4. 邮件推送给多用户

下一个主题

7.6. 附件的使用


7.5. 发送HTML格式邮件

Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html。具体代码如下:

>>> import smtplib
>>> from email.mime.image import MIMEImage
>>> from email.mime.multipart import MIMEMultipart
>>> from email.mime.text import MIMEText
>>> from email.header import Header
>>> from cfg import email_cfg
>>> sender = email_cfg['user']
>>> password=email_cfg['passwd']

接收邮件,可设置为你的QQ邮箱或者其他邮箱

>>> receivers = [email_cfg['user']]
>>> msgRoot = MIMEMultipart('related')
>>> msgRoot['From'] = Header("Me", 'utf-8')
>>> msgRoot['To'] =  Header("我", 'utf-8')
>>> subject = 'Python SMTP 邮件测试'
>>> msgRoot['Subject'] = Header(subject, 'utf-8')
>>> msgAlternative = MIMEMultipart('alternative')
>>> msgRoot.attach(msgAlternative)
>>> mail_msg = """
>>> <p>Python 邮件发送测试...</p>
>>> <h1>H1</h1>
>>> <button>hi~</button>
>>> <p><img src="cid:image1"></p>"""
>>> msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8'))

指定图片为当前目录。

>>> fp = open('4.2.png', 'rb')
>>> msgImage = MIMEImage(fp.read())
>>> fp.close()

定义图片 ID,在 HTML 文本中引用

>>> msgImage.add_header('Content-ID', '<image1>')
>>> msgRoot.attach(msgImage)
>>> try:
>>>     smtpObj = smtplib.SMTP_SSL('smtp.163.com',port=465)
>>>     smtpObj.login(sender,password)
>>>     smtpObj.sendmail(sender, receivers, msgRoot.as_string())
>>>     print ("邮件发送成功")
>>>     smtpObj.quit()
>>> except smtplib.SMTPException:
>>>     print (smtplib.SMTPException)
邮件发送成功