如何不使用QQ邮箱,纯靠代码发送QQ邮件?

使用道具

  下载了python tools的VisualStdio 2017(其实是只要有python的编译器就行)

方法介绍

  这里我们使用的模块是SMTPLIB,所以很显然我这里运用的是smtp协议去进行邮件的传输。邮件的传输我这里会讲两种情况:一种是不带附件的情况下该怎么传输,另一种则是带上附件的时候该怎么传输邮件。

准备工作

  我们首先需要一个邮件的发出端,因为我们要用的是smtp协议,所以需要一台smtp的服务器,这里我选择的是qq邮箱的smtp服务器,但是这个服务在一开始是默认处于关闭状态的,所以我们先需要在qq邮箱的设置里面打开它:(注意是打开邮件发送者的,不是邮件的接受者)

打开qq邮箱,点击设置:
在这里插入图片描述
点击账户:在这里插入图片描述
向下滑动,找到如下位置后,打开如图三个选项:
在这里插入图片描述
然后点击生成授权码,将授权码保存至一个地方,等会需要用到:
在这里插入图片描述

发送的邮件不需要附件的情况下

  在发送的邮件不需要附件的情况下,我们的代码如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

fromaddr = ""//发送者的qq邮箱
toaddr = ""//接收者的qq邮箱

msg = MIMEMultipart()//实例化一个MIMEMultipart
msg['From'] = fromaddr//设置来源的地址
msg['To'] = toaddr //设置目的地的地址
msg['Subject'] = "python"//设置的邮件的主题
body = "好有趣"//设置邮件的正文内容

msg.attach(MIMEText(body, 'plain'))//第二个‘plain’为设置正文的格式
server = smtplib.SMTP("smtp.qq.com",587)//设置SMTP的服务器和其相对应的SMTP接口

server.starttls()//开始
server.login(fromaddr , "")//第二个参数为刚刚保存的邮件发送端的授权码
text = msg.as_string()//转换message的格式
server.sendmail(fromaddr, toaddr, text)//发送邮件
server.quit()//结束

发送的邮件需要附件的情况下

  在发送的邮件需要附件的情况下,我们的代码如下:(注意:这里的文件是采用的相对位置)

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

fromaddr = ""//邮件发送者的地址
toaddr = ""//邮件接受者的地址
msg = MIMEMultipart()//实例化一个MIMEMultipart
msg['From'] = fromaddr//设置来源地址
msg['To'] = toaddr//设置目的地地址
msg['Subject'] = "python"//设置邮件的主题
body = "邮件传输"//设置邮件的正文

msg.attach(MIMEText(body, 'plain'))
filename = "技术报告.docx"//需要传递的附件的名称(相对地址)
attachment = open(filename, 'rb')//打开该文件
part = MIMEBase('application', 'octet-stream')//进行格式转换
part.set_payload((attachment).read())//设置数据
encoders.encode_base64(part)//解码
part.add_header('Content-Disposition', 'attachment', filename=filename)
msg.attach(part)//添加附件

server = smtplib.SMTP("smtp.qq.com",587)//设置SMTP
server.starttls()//开始
server.login(fromaddr , "")//第二个参数还是那个邮件发送端的授权码
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)//发送邮件
server.quit()//结束

总结

  其实也可以不用qq邮箱,只要有smtp的服务器,选择什么来进行发送都没有问题,只要找到它对应好的smtp接口即可

发布了40 篇原创文章 · 获赞 80 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_19408097/article/details/100546889