参考文章:cPython SMTP发送邮件-smtplib模块
1.最终使用的电子邮件协议是哪一个?
SMTP
2.需要什么服务器呢?
需要的是qq邮箱SMTP服务器
如何在python中实现的呢?
python支持内置对SMTP协议的支持,具体模块有smtplib和email,
在python中只需要import导入即可
smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。
email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。
3.发送端邮箱需要完成哪些预备操作?
1.在邮箱中开启SMTP服务
2.获取到发送方邮箱的授权码
4.具体的实现流程是什么样的呢?
当发送方的客户端代码使用 SMTP 协议发送邮件时,整个过程大致分为以下步骤:
subject = "XXXX" # 主题
content = generate() #可以实现一个验证码生成函数
message_content = "您本次的验证码是:" + content
msg = MIMEText(message_content)
msg['Subject'] = subject
msg['From'] = msg_from
msg['To'] = msg_to
s = smtplib.SMTP_SSL("smtp.qq.com", 465)#QQ邮箱SMTP服务器,指定连接的邮箱服务器和端口
s.login(msg_from, passwd)#登录邮箱的用户名,以及邮箱的授权码
s.sendmail(msg_from, msg_to, msg.as_string())
- 建立连接: 客户端代码使用
smtplib.SMTP_SSL()
方法建立到 QQ 邮箱的 SMTP 服务器的连接。通过指定服务器地址("smtp.qq.com")和端口号(465)来连接到 SMTP 服务器。 - 身份验证: 客户端代码使用
s.login(msg_from, passwd)
方法向 SMTP 服务器发送发送方邮箱的用户名(msg_from
)和授权码(passwd
)进行身份验证。 - 准备邮件: 客户端代码准备要发送的邮件内容,包括邮件主题、发件人、收件人以及邮件内容等信息。在这段代码中,邮件内容是通过生成验证码的方式动态生成的。
- 发送邮件: 客户端代码使用
s.sendmail(msg_from, msg_to, msg.as_string())
方法将邮件发送给 SMTP 服务器。这一步将邮件数据发送给 SMTP 服务器,然后由 SMTP 服务器负责将邮件传送到接收方邮箱。 - 关闭连接: 客户端代码使用
s.quit()
方法关闭与 SMTP 服务器的连接,释放资源并结束邮件发送过程。
总的来说,发送方的客户端代码通过 SMTP 协议与 QQ 邮箱的 SMTP 服务器建立连接,并在服务器进行身份验证后,使用服务器来发送邮件。SMTP 服务器负责将邮件传递到接收方的邮箱。
5.在设置过这个选项之后才会在发送端邮箱中保存记录(即已发送)
SMTP发信后保存到服务器