Day6-邮件的自动发送
1. 邮件自动发送的基本流程
1.1 准备邮箱账号和密码(授权码)
- 账号: 3552531753@qq.com
- 授权码:在设置—>账户—>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中开启POP3/SMTP服务—>再生成授权码
1.2 连接邮箱服务器(相当于打开邮箱网址)
import smtplib
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
1.3 登录邮箱账号
connect.login('3552531753@qq.com', 'xcthcqflfjdhdcbh')
print('邮箱登录成功!')
1.4 准备邮件内容
-
创建空的邮件对象
-
设置邮件主题
-
设置收件人信息
-
设置发件人信息
-
正文
from email.mime.multipart import MIMEMultipart from email.header import Header from email.mime.text import MIMEText # 1) 创建空的邮件对象 mail = MIMEMultipart() # 2) 设置邮件主题 mail['Subject'] = Header('我的周报', 'utf-8').encode() # 3)设置收件人信息 mail['To'] = '1945919018@qq.com' # 4) 发件人 mail['From'] = 'Lu <3552531753@qq.com>' # 5) 正文 text = MIMEText('亲爱的,嘻嘻嘻嘻嘻嘻嘻,哈哈哈哈哈哈哈', 'plain', 'utf-8') mail.attach(text)
1.5 发送文件
connect.sendmail('3552531753@qq.com', '1945919018@qq.com', mail.as_string())
1.6 关闭连接
connect.quit()
2. 发送附件(添加附件流程)
根据以上基本流程,修改邮件内容中正文即可
- plain - 普通文本; html - 超文本; base64 - 二进制文件(用于添加附件)
text = MIMEText('下面是所有的附件内容...', 'plain', 'utf-8')
mail.attach(text)
2.1 打开文件获得文件对象
在此前可以将本地文件复制到该目录下
f1 = open('files/孔明灯.jpeg', 'rb')
f2 = open('files/smtplib 邮件自动发送.pdf', 'rb')
f3 = open('files/意境.jpeg', 'rb')
2.2 创建附件对应的文本对象
a1 = MIMEText(f1.read(), 'base64', 'utf-8')
a2 = MIMEText(f2.read(), 'base64', 'utf-8')
a3 = MIMEText(f3.read(), 'base64', 'utf-8')
2.3 设置附件信息
a1['Content-Disposition'] = 'attachment; filename = "data1.jpeg"'
a2['Content-Disposition'] = 'attachment; filename = "data2.pdf"'
a3['Content-Disposition'] = 'attachment; filename = "data3.jpeg"'
2.4 将附件关联到邮件中
mail.attach(a1)
mail.attach(a2)
mail.attach(a3)
3. 发送图片
根据以上基本流程,修改邮件内容中正文即可
3.1 准备图片
f1 = open('files/孔明灯.jpeg', 'rb')
f2 = open('files/猫可.jpeg.jpeg', 'rb')
f3 = open('files/孔明灯2.jpg', 'rb')
f4 = open('files/4.jpeg', 'rb')
3.2 创建图片对象
image1 = MIMEImage(f1.read())
image2 = MIMEImage(f2.read())
image3 = MIMEImage(f3.read())
image4 = MIMEImage(f4.read())
3.3 给图片添加ID
image1.add_header('Content-ID', 'i1')
image2.add_header('Content-ID', 'i2')
image3.add_header('Content-ID', 'i3')
image4.add_header('Content-ID', 'i4')
3.4 将图片关联到邮件中
mail.attach(image1)
mail.attach(image2)
mail.attach(image3)
mail.attach(image4)
3.5 正文中使用图片
正文添加图片格式:
text1 = MIMEText('孔明灯图片: <br> <img src="cid:i1" width="400">', 'html', 'utf-8')
mail.attach(text1)
text3 = MIMEText('<img src="cid:i3" width="400">', 'html', 'utf-8')
mail.attach(text3)
text2 = MIMEText('猫咪图片: <br> <img src="cid:i2" width="400">', 'html', 'utf-8')
mail.attach(text2)
text4 = MIMEText('<img src="cid:i4" width="400">', 'html', 'utf-8')
mail.attach(text4)
4. 超文本文件
根据以上基本流程,修改邮件内容中正文即可
新建一个html文件进行页面设计,如下data.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="box">
<img src="http://mobile.12306.cn/weixin/resources/weixin/images/mail/mail_top.jpg">
<p id="p1"><b>尊敬的</b> <span style="color: red; font-weight:800;">余女士:</span></p>
<p id="p2">
您好!<br>
您在中国铁路客户服务中心网站(<a href="http://www.12306.com">12306.cn</a>)成功办理了候补购票业务, 成功兑现了1张车票,票款共计283.00元,订单号码 <span style="color: red;">EK28002341</span>。 车票信息如下:</p>
<img src="http://mobile.12306.cn/weixin/resources/weixin/images/mail/mail_line.jpg">
</div>
<style>
#box{
width: 760px;
border: 1px solid rgb(190, 190, 190);
margin-left: auto;
margin-right:auto;
}
#p1{
margin-left: 20px;
font-size: 15px;
}
#p2{
margin-left: 20px;
font-size: 12px;
color: light-gray;
}
#p2>a{
color: #6d7855;
}
</style>
</body>
</html>
html = open('data.html', 'rt', encoding='utf-8').read()
text = MIMEText(html, 'html', 'utf-8')
mail.attach(text)