python自动办公-发邮件带附件

濮阳浩穰
2023-12-01

这一篇的话区别于上一篇在于增加了添加附件的功能,增大邮件的功能

import smtplib

1.发送人账号

sendAddress = '928606004@qq.com'

2.发送人你授权码(邮箱中的授权码等同于密码)

授权码获取:例如qq邮箱:在设置中激活关于smtp协议的选项,点击获取即可
写这个代码password = ‘’
''中写入你的授权码
csdn社区不能发这个,去掉**即可以用

3.连通服务器

server = smtplib.SMTP_SSL('smtp.qq.com', 465)
print(server)

4.登录

loginResult = server.login(sendAddress, password)
print(loginResult)

(235,b’Authentication successful’)
235相应成功状态码

构建能够添加附件的邮件

from email.mime.text import MIMEText

使用MIMEMultipart添加附件

from email.mime.multipart import MIMEMultipart

定义一个可以添加正文和附件的邮件消息对象

msg = MIMEMultipart()

构建发件人、收件人、邮件主题等

msg['From'] = 'niuma<928606004@qq.com>'
msg['To'] = '张三<928606004@qq.com>'
msg['Subject'] = '起床啦,兄弟'
content = """
小伙汁,我劝你耗子尾汁
"""

添加正文
使用attach()向能够添加多组件的MIMEMultipar中添加邮件的组成部分

msg.attach(MIMEText(content, 'plain', 'utf-8'))

添加附件
先将附件使用二进制形式(字节)读取,再使用MIMEText方法规范
base64:最常用的字节传输方式

attachment_1 = MIMEText(open('mabaoguo.jpg', 'rb').read(), 'base64', 'utf-8')

告知浏览器或邮件服务器这是字节流

attachment_1['Content-Type'] = 'application/octet-stream'

告知浏览器或邮箱这是一个叫xxx的邮件附件
这个名字不要出现中文,不同邮箱对待中文的方式不一样

attachment_1['Content-Disposition'] = 'attachment;filename = "mabaoguo.jpg"'
msg.attach(attachment_1)

To = ['928606004@qq.com']
server.sendmail(sendAddress, To, msg.as_string())
print('发送成功')
 类似资料: