DAY6邮件自动发送
- 1.准备邮箱账号和密码(授权码)
账号:1219068551@qq.com
授权码:ncjsdnbobsasjbbhs(假设生成的为这一串)
- 2.连接邮箱服务器(即打开邮箱网站)465端口
import smtplib
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
- 3.登录邮箱账号
connect.login('1219068551@qq.com', 'xmjypotwtrnvibjf')
print('邮箱登录成功!')
- 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'] = '2369746305@qq.com'
4)设置发件人信息
mail['From'] = 'Hudinge <1219068551@qq.com>'
5)正文
#正文类型: plain:普通文字内容 html–超文本
text = MIMEText('尊敬的领导,以下是本的工作内容:.....', 'plain', 'utf-8') mail.attach(text)
- 5.发送邮件(点击发送)
connect.sendmail('1219068551@qq.com', '2369746305@qq.com', mail.as_string())
- 6.关闭连接(关闭网站)
connect.quit()
一、发送附件
流程:
总的代码:
import smtplib # 建立链接 connect = smtplib.SMTP_SSL('smtp.qq.com',465) # 登录邮箱 connect.login('1219068551@qq.com','xmjypotwtrnvibjf') from email.mime.multipart import MIMEMultipart from email.header import Header from email.mime.text import MIMEText mail = MIMEMultipart() mail['Subject'] = Header('发送附件', 'utf-8').encode() mail['To'] = '2369746305@qq.com' mail['From'] = 'Hudinge <1219068551@qq.com>' text = MIMEText('下面是所有附件内容', 'plain', 'utf-8') #构建正文类的对象 mail.attach(text) ====================发送附件========================== # 1.打开文件获得文件对象 f1 = open('files/QQ图片20220901111803.jpg', 'rb') f2 = open('files/work_all_2.xls', 'rb') f3 = open('files/夏天.png', 'rb') # 2.创建附件对应的文本对象 a1 =MIMEText(f1.read(),'base64', 'utf-8') a2 =MIMEText(f2.read(),'base64', 'utf-8') a3 =MIMEText(f3.read(),'base64', 'utf-8') # 附件名称不能有中文 # 3.设置附件信息 a1['Content-Disposition'] = 'attachment; filename="data1.jpg"' a2['Content-Disposition'] = 'attachment; filename="data2.xls"' a3['Content-Disposition'] = 'attachment; filename="data3.png"' # 4.将附件添加邮件中 mail.attach(a1) mail.attach(a2) mail.attach(a3) # 发送邮件 connect.sendmail('1219068551@qq.com', '2369746305@qq.com', mail.as_string()) # 关闭连接 connect.quit()
1.打开文件获得文件对象
#需要创建files的文件夹存放图片,并且打开方式只能为rb f1 = open('files/QQ图片20220901111803.jpg', 'rb') f2 = open('files/work_all_2.xls', 'rb') f3 = open('files/夏天.png', 'rb')
2.创建附件对应的文本对象
a1 =MIMEText(f1.read(),'base64', 'utf-8') a2 =MIMEText(f2.read(),'base64', 'utf-8') a3 =MIMEText(f3.read(),'base64', 'utf-8')
3.设置附件信息
#附件名称不能有中文 a1['Content-Disposition'] = 'attachment; filename="data1.jpg"' a2['Content-Disposition'] = 'attachment; filename="data2.xls"' a3['Content-Disposition'] = 'attachment; filename="data3.png"'
4.将附件添加到邮件中
mail.attach(a1) mail.attach(a2) mail.attach(a3)
5.发送邮件
connect.sendmail('1219068551@qq.com', '2369746305@qq.com', mail.as_string())
6.关闭连接
connect.quit()
二、发送图片
流程:
1.准备图片
f1 = open('files/夏天.png', 'rb') f2 = open('files/QQ图片20220901111803.jpg', 'rb')
2.创建图片对象
image1 = MIMEImage(f1.read())
3.给图片添加id
image1.add_header('Content-ID', '<i1>')
4.将图片关联到邮件中
mail.attach(image1)
5.在正文中使用图片
# 正文添加图片的格式:<img src="cid: 图片id值" width="300"> # 文本类型html ,编码方式utf - 8 text = MIMEText('结果是:<br><br> <img src="cid:i1" width="200">', 'html', 'utf-8') mail.attach(text)
6.发送邮件并关闭连接
connect.sendmail('1219068551@qq.com', '2369746305@qq.com', mail.as_string()) # 关闭连接 connect.quit()
三、发送超文本文件
举例:
import smtplib from email.mime.multipart import MIMEMultipart from email.header import Header from email.mime.text import MIMEText from email.mime.image import MIMEImage connect = smtplib.SMTP_SSL('smtp.qq.com', 465) connect.login('1219068551@qq.com', 'ezvhhcqvjzpbbegd') mail = MIMEMultipart() mail['Subject'] = Header('网上购票系统-候补订单兑现成功通知', 'utf-8').encode() mail['To'] = '2369746305@qq.com' mail['From'] = 'Hudinge <1219068551@qq.com>' #打开超文本对象 html = open('data.html', 'rt', encoding='utf-8').read() text = MIMEText(html, 'html', 'utf-8') mail.attach(text) # 发送邮件 connect.sendmail('1219068551@qq.com', '2369746305@qq.com', mail.as_string()) connect.quit()