我们已经学习了如何使用 smtplib 和 email 模块发送普通文本邮件,这节我们来学习下如何发送 HTML 格式邮件和为邮件添加附件。
1. HTML 格式邮件介绍
所谓 HTML 格式的邮件,是指一类像网页一样的邮件,它包含有 HTML(超文本)链接,单击链接可以转到其他页面,可以有图片,声音等。对比普通的文本邮件,HTML 格式的邮件,可以使得邮件内容多姿多彩,除文字外,还能有声音图像链接等等。
通常在宣传活动、电商类等内容上使用 HTML 格式邮件的情况较多,目的是为了更好的展示邮件内容,以及和用户有所交互。
2. 发送 HTML 格式邮件
发送邮件如下代码所示:
import smtplib
from email.mime.text import MIMEText
host_server = 'smtp.qq.com'
sender = "xxx@qq.com"
code = "xlogucqphohxcabi"
user = "xxxx@163.com"
mail_title = "第二封邮件"
mail_content = """
<p>HTML格式邮件内容</p>
<p><a href="http://www.baidu.com">百度一下</a></p>
<li>top1</li>
<li>top2</li>
smtp = smtplib.SMTP(host_server)
smtp.login(sender, code)
msg = MIMEText(mail_content, 'html', 'utf-8')
msg['Subject'] = mail_title
msg['From'] = sender
msg['To'] = user
smtp.sendmail(sender, user, msg.as_string())
代码解释:在上一小发送普通邮件代码的基础上,将发送内容由普通文本变更为 HTML 格式内容,首先修改 mail_content 设置为 HTML 内容,修改 MIMEText 构建参数为 html,其他内容不变。执行完成后,打开收件邮件即可收到第二封邮件,如下图所示。
3. 带附件邮件介绍
电子邮件附件是跟电子邮件一同发出的附带文件,附件包括声音、视频、文档、图片等一系列允许发送的文件(注意.exe 文件不允许发送)。带附件的邮件具体附件位置如下图所示。
4. 发送带附件的邮件
发送邮件如下代码所示:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
host_server = 'smtp.qq.com'
sender = "389818529@qq.com"
code = "xlogucqphohxcabi"
user = "yanwydxf@163.com"
mail_title = "第三封邮件"
mail_content = "具体请查看附件!"
smtp = smtplib.SMTP(host_server)
smtp.login(sender, code)
attachment=MIMEApplication(open('newinfo.xlsx','rb').read())
attachment.add_header('Content-Disposition','attachment',filename='data.xlsx')
msg=MIMEMultipart()
msg['Subject'] = mail_title
msg['From'] = sender
msg['To'] = user
smtp.sendmail(sender, user, msg.as_string())
代码解释:在发送普通邮件的代码的基础上,导入 email 模块下 MIMEMultipart 与 MIMEApplication 用于构建附件。首先通过 MIMEApplication 封装附件,newinfo.xlsx 为本地文件名称, data.xlsx 为发送到对方邮箱后所显示的名称。通过 MIMEMultipart 构建带附件的实例,其他内容不变。执行完成后,打开收件邮件即可收到第三封邮件,如下图所示。