您当前的位置: 首页 >  Python

快乐很重要的汪

暂无认证

  • 2浏览

    0关注

    36博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python自动化办公--QQ发送邮件包含中文名附件

快乐很重要的汪 发布时间:2022-09-03 12:10:59 ,浏览量:2

python自动化办公

本节目标:python调用QQ邮箱API发送邮件。

本节内容:自动化定时发送邮件 本节技术点:smtplib,datetime

本节阅读需要(15)min。 本节实操需要(20)min。

文章目录
  • python自动化办公
  • 前言
  • 一、开启smtp服务
  • 二、使用smtplib发送邮件
    • smtplib简介
    • 第一封邮件
  • 总结

前言

大规模批量化的发送邮件一直是自动化办公的一个重要内容。升职加薪。冲冲冲!!!! 另外datetime库也是一个必须掌握的库。详细内容见

一、开启smtp服务

打开邮箱服务器。设置-》账户 在这里插入图片描述 找到这个然后开启。 在这里插入图片描述 需要短信验证,证明安全性。

然后会得到授权码,自己截图保存。
二、使用smtplib发送邮件 smtplib简介
# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容
from email.header import Header
# 用于构建邮件头 
# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxx@qq.com'

# 收信方邮箱
to_addr = 'xxx@qq.com'
 
# 发信服务器
smtp_server = 'smtp.qq.com' # QQ固定是这个
 
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('send by python','plain','utf-8')
 
# 邮件头信息
msg['From'] = Header(from_addr)
msg['To'] = Header(to_addr)
msg['Subject'] = Header('python test')
 
# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL(smtp_server) # 实例化一个加密服务器
server.connect(smtp_server,465) # 启动加密端口,QQ加密的固定是这个
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()
第一封邮件

上面的模板测试了非常的好用。 只要不是填写垃圾信息,应该都是能收到的。

授权码不是密码,是截图保存的16位字符串。

其实按照上文是可以直接发一个标题,内容都很简单的邮件的。

但是我们发邮件一般需要有一个格式,不是一句话,而且需要附带图片或者附件。

所以我们在内容上还需要一些改进。我们要用到MIMEText之类的工具

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一

在这里插入图片描述 上代码!!!

from datetime import date,datetime
from fileinput import filename
import smtplib
# email 用于构建邮件内容
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from datetime import datetime
# 用于构建邮件头
 
# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxxxxxx@qq.com'
shouquanma = 'xxxxxxxxx'
 
# 收信方邮箱
to_addr = 'xxxxxxxxx@outlook.com'
 
# 发信服务器
smtp_server = 'smtp.qq.com'
# 创建一个可以同时添加正文和附件的msg
msg1=MIMEMultipart()

# 添加正文, 是空格
mail_msg='''

  亲爱的老铁

睡什么睡,起来嗨

''' #如果仅添加正文可以用此公式:msg=MIMEText(mail_msg,'html','utf-8')#表示添加正文内容 msg1.attach(MIMEText(mail_msg,'html','utf-8')) # 添加附件,本质上是通过SMTP报文协议传送流文件 rarFilePath = '发送.txt' att1=MIMEText(open(rarFilePath,'rb').read(),'base64','utf-8')#添加附件,由于定义了中文编码,所以文件可以带中文 ### 只支持英文文件名 # att1["Content-Type"]='application/octet-stream'#数据传输类型的定义 # att1["Content-Disposition"]='attachment;filename=%s'%rarFilePath#定义文件在邮件中显示的文件名和后缀名,名字不可为中文,会乱码 # msg1.attach(att1) ### 支持中文的 att1["Content-Type"] = 'application/octet-stream;name=%s'%Header(rarFilePath,'UTF-8') att1.add_header('content-disposition','attachment',filename=rarFilePath) msg1.attach(att1) # 邮件头信息,属性是固定的 msg1['From'] = Header(from_addr) msg1['To'] = Header(to_addr) msg1['Subject'] = Header('hello world') msg1['Date'] = datetime.ctime(datetime.now()) # 开启发信服务,这里使用的是加密传输 server = smtplib.SMTP_SSL(smtp_server) # 实例化一个加密服务器 server.connect(smtp_server,465) # 启动加密端口 # 登录发信邮箱 server.login(from_addr, shouquanma) # 发送邮件 # server.sendmail(from_addr, to_addr, msg.as_string()) # 发送纯文本 server.send_message(msg1) # 发送邮件对象 # 关闭服务器 server.quit()

你们看看多么愉快啊

总结

本节讲解了如何发送邮件。

使用的到了smtplib,负责报文发送。网络层 email则负责内容的构建。应用层

下一节,我们讲讲,定时,和群发。

那就更刺激了!!!

关注
打赏
1663165558
查看更多评论
立即登录/注册

微信扫码登录

0.0354s