利用Python实现邮件发送

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是⼀一组⽤用于由源地址到⽬目的地址传送。

邮件的规则,由它来控制信件的中转⽅方式。python的smtplib提供了了⼀一种很⽅方便便的途径发送电⼦子邮件。它对smtp协议进⾏行行了了简单的封装。

1. 准备用来发送邮件的邮箱账号

准备好邮箱账号和邮箱登录授权码。不同类型邮箱获取授权码的方式大同小异,这儿以QQ邮箱为例演示获取授权码步骤:

第一步:用网页登录QQ邮箱,找到帮助中心

第二步:在帮助中心中选择"客户端设置"中的第2个问题:

然后按照对应的要求操作,得到授权码并且保存。

2. 发送邮件的基本步骤

代码发送邮件的步骤,和人工发送邮件步骤基本一致:登录邮箱 -> 准备邮件内容 -> 发送邮件

2.1 登录邮箱
import smtplib  
1. 连接邮箱服务器  
连接对象 = smtplib.SMTP_SSL(服务器地址, 邮箱服务端口)  
- 服务器地址:smtp.163.com(163邮箱)、smtp.qq.com(qq邮箱) - 邮箱服务端口:465或者25  
      
2. 登录邮箱 连接对象.login(邮箱账号, 授权码)  

2.2 准备数据

数据指的需要发送的内容。邮件内容的构建需要涉及到另外一个库email,它可以⽤来构建邮件主题以及各种形式的邮件内容(包括文字内容、图片内容、html内容、附件)等,这⼉先简单说一下邮件主题和⽂本内容,其他形式的内容在后⾯面邮件内容部分详细讲解。

from email.mime.multipart import MIMEMultipart   
from email.mime.text import MIMEText  
from email.header import Header  
1. 创建邮件对象  
邮件对象 = MIMEMultipart()  
2. 设置邮件主题  
主题对象 = Header(邮件标题, 编码方式).encode()   
邮件对象['Subject'] = 主题对象  
3.设置邮件发送者  
邮件对象['From'] = '用户名 <用户名>'  
4.设置邮件接受者  
邮件对象['To'] = '收件⼈1;收件⼈2;收件人3...'  
5. 添加文字内容  
文字内容对象 = MIMEText(内容, 类型, 编码方式)   
- 内容:就是文字字符串  
- 类型:plain(简单的⽂字内容)、html(超文本) 邮件对象.attach(文字对象)  

2.3 发送邮件
 连接对象.sendmail(发件⼈, 收件人, 邮件对象.as_string())   
 连接对象.quit()

3.各种类型邮件发送实例

3.1普通文字内容邮件

这类邮件的邮件正文只有普通文字信息,没有超文本也没有图片,并且没有附件:

`import smtplib   from email.mime.multipart import MIMEMultipart    from email.mime.text import MIMEText   from email.header import Header   # 1. 连接邮箱服务器   con = smtplib.SMTP_SSL('smtp.163.com', 465)   # 2. 登录邮箱    con.login('XXXX@163.com', 'XXXXX')   # 2. 准备数据   # 创建邮件对象   msg = MIMEMultipart()   # 设置邮件主题   subject = Header('找回密码', 'utf-8').encode() msg['Subject'] = subject   # 设置邮件发送者   msg['From'] = 'XXXX@163.com <XXXX@163.com>'   # 设置邮件接受者   msg['To'] = '726550822@qq.com'   # 添加⽂文字内容   text = MIMEText('忘记密码需要找回密码', 'plain', 'utf-8')    msg.attach(text)   # 3.发送邮件   con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string())    con.quit()   `  

3.2 超文本文件内容

正文更加丰富和有趣的一种邮件,生活中我们接收到的来自各大平台发送的邮件都是这类邮件,核心代码格式如下:

from email.mime.text import MIMEText  
html⽂本对象 = MIMEText(html内容字符串, 'html', 编码方式) 邮件对象.attach(html⽂本对象)  

具体代码:

import smtplib  
from email.mime.multipart import MIMEMultipart   
from email.mime.text import MIMEText  
from email.header import Header  
con = smtplib.SMTP_SSL('smtp.163.com', 465)  
con.login('xxxx@163.com', 'xxxxxx')  
msg = MIMEMultipart()  
subject = Header('找回密码', 'utf-8').encode()   
msg['Subject'] = subject  
msg['From'] = 'xxxx@163.com <xxxx@163.com>'  
msg['To'] = '726550822@qq.com'  
  
# 添加html内容  
content = """  
<h2>我是正⽂中的标题</h2>  
<p>邮件正文描述性文字1</p>  
<p>邮件正⽂描述性文字2</p>  
<img src='https://www.baidu.com/img/bd_logo1.png'> <center>百度图片</center>  
<a href='https://www.baidu.com'>百度⼀下</a>  
"""  
html = MIMEText(content, 'html', 'utf-8')   
msg.attach(html)  
# 发送邮件  
con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string())   
con.quit()  

3.3 发送附件

邮件内容除了正文内容,有的时候还需要将各种文件以附件的形式单独发送,发送附件的核心代码如下:

from email.mime.text import MIMEText  
⽂文件对象 = MIMEText(⽂件二进制数据, 'base64', 编码⽅式)   
文件对象["Content-Disposition"] = 'attachment; filename="⽂件名"'   
邮件对象.attach(⽂件对象)  

具体代码:

import smtplib  
from email.mime.multipart import MIMEMultipart   
from email.mime.text import MIMEText  
from email.mime.image import MIMEImage  
from email.header import Header  
from email.mime.message import MIMEMessage from copy import deepcopy  
  
con = smtplib.SMTP_SSL('smtp.163.com', 465)  
con.login('xxxx@163.com', 'xxxxxx')  
  
msg = MIMEMultipart()  
subject = Header('⽂文件附件发送', 'utf-8').encode() msg['Subject'] = subject  
msg['From'] = 'xxxx@163.com <xxxx@163.com>'  
msg['To'] = '726550822@qq.com'  
  
# 添加⽂文件附件  
file1 = MIMEText(open('files/test.txt', 'rb').read(), 'base64', 'utf-8')   
file1["Content-Disposition"] = 'attachment; filename="test.txt"'   
msg.attach(file1)  
file2 = MIMEText(open('files/pyecharts的使⽤用.pdf', 'rb').read(), 'base64', 'utf-8')  
file2["Content-Disposition"] = 'attachment; filename="test.pdf"'   
msg.attach(file2)  
# 发送邮件  
con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string())   
con.quit()  

以上就是“利用Python实现邮件发送”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值