day19自动化办公1

邮件自动发送

一、邮件自动收发的流程

163邮箱、QQ邮箱,需要准备账号和授权码(密码不好⽤),可以去QQ邮箱官⽹的帮助中⼼去查看授权码的获取⽅式
以下账号(邮箱账号),收件人账号(收件人的邮箱账号)

# smtplib  -  登陆邮箱:发送邮件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText

# 1.连接邮箱服务器
# 连接对象 = smtplip.SMTP_SSL(服务器地址, 邮箱服务端⼝) 
# 服务器地址:smtp.163.com(163邮箱)、smtp.qq.com(qq邮箱)
# 邮箱服务端⼝:465或者25
# smtplib.SMTP_SSL(服务器地址,邮箱服务端口(465或25)) - 链接邮箱服务器并且返回一个连接对象
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)

# 2.登录邮箱
# 连接对象.login(账号,授权码)
connect.login('账号', '授权码')


# 第二步:准备邮件
# 1.创建邮件对象
email = MIMEMultipart()

# 2.设置邮件的主题
# Header(邮件标题, 编码方式)
heard = Header('邮件的标题', 'utf-8').encode()
email['subject'] = heard

# 3.设置邮件接收者信息(收件人)
email['to'] = '收件人账号'

# 4.设置邮件发件人
email['From'] = '账号  <账号>'

# 5.添加正文
"""
MIMEText(文字内容, 类型, 编码方式)
类型 - plain(普通文字)、html(超文本)

"""
text = MIMEText('我是你爸爸正伟大,养你这么大', 'plain', 'utf-8')
email.attach(text)

# 第三步:通过连接发送邮件
# 连接对象.sendmail(发送人,收件人,邮件对象.as_string())
connect.sendmail('账号', '收件人账号', email.as_string())
connect.quit()  # 关闭连接

二、发送邮件图片附件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

# 1.登录
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('账号', '授权码')

# 2.准备邮件
email = MIMEMultipart()

email['Subject'] = Header('发送附件', 'utf-8').encode()
email['To'] = '收件人账号'
email['From'] = '账号 <账号>'

text = MIMEText('照片再附件内,请注意查收!', 'plain', 'utf-8')
email.attach(text)

# =======================1.图片附件=================
# 3.准备图片
# 1)打开图片读取图片二进制数据
image_data = open('files2/tupian.jfif', 'rb').read()
# 2)创建图片
image = MIMEImage(image_data)
# 3)设置图片为附件
image['Content-Disposition'] = 'attachment; filename="tupian"'
# 4)将图片按附件添加邮件对象中
email.attach(image)

# =============2.其他文件附件=============
# 1)得到文件类容
file_data1 = open('files2/RAMMap.zip', 'rb').read()
# 2)创建文件
file1 = MIMEText(file_data1, 'base64', 'utf-8')
# 3)设置文件为附件
file1['Content-Disposition'] = 'attachment; filename="a.zip"'
# 4)将文件按附件添加邮件对象中
email.attach(file1)



file_data2 = open('files/水质图.xlsx', 'rb').read()
file2 = MIMEText(file_data2, 'base64', 'utf-8')
file2['Content-Disposition'] = 'attachment; filename="data.xlsx"'
email.attach(file2)


# 3.发送邮件
connect.sendmail('账号', '收件人账号', email.as_string())
connect.quit()  # 关闭连接

三、超文本邮件内容

import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText

# 1.登录
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('账号', '授权码')

# 2.准备邮件
email = MIMEMultipart()

email['Subject'] = Header('HTML邮件', 'utf-8').encode()
email['To'] = '收件人账号'
email['From'] = '账号 <账号>'

# ==========邮件正文============
# 1)获取发送的html的内容
content = open('files/sent.html', encoding='utf-8').read()
# 2)将html的内容放到正文中
text = MIMEText(content, 'html', 'utf-8')
email.attach(text)

"""
图⽚对象 = MIMEImage(图⽚⼆进制数据)
image.add_header('Content-ID', '<⾃定义图⽚id>')
邮件对象.attach(图⽚对象)
"""
image_data = open('files2/tupian.jfif', 'rb').read()
image = MIMEImage(image_data)
image.add_header('Content-ID', '<image1>')
email.attach(image)



connect.sendmail('账号', '收件人账号', email.as_string())
connect.quit()  # 关闭连接

四、批量发送附件邮件

import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
import os

# 1.登录
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('账号', '授权码')

# 2.准备邮件
email = MIMEMultipart()

email['Subject'] = Header('发送附件', 'utf-8').encode()
email['To'] = '收件人账号'
email['From'] = '账号 <账号>'

text = MIMEText('照片在附件中,请注意查收!', 'plain', 'utf-8')
email.attach(text)

# ==========邮件正文============
# 获取files2文件下的所有文件的 文件名
all_file = os.listdir('files2')


def zip_annex(name):
    file_data1 = open(f'files2/{name}', 'rb').read()
    file1 = MIMEText(file_data1, 'base64', 'utf-8')
    file1['Content-Disposition'] = f'attachment; filename="{name}"'
    email.attach(file1)


def jfif_annex(name):
    # 1)打开图片读取图片二进制数据
    image_data = open(f'files2/{name}', 'rb').read()
    # 2)创建图片对象
    image = MIMEImage(image_data)
    # 3)设置图片为附件
    image['Content-Disposition'] = f'attachment; filename="{name}"'
    # 4)将图片附件添加到邮件对象中
    email.attach(image)


def pdf_annex(name):
    file_data1 = open(f'files2/{name}', 'rb').read()
    file1 = MIMEText(file_data1, 'base64', 'utf-8')
    file1['Content-Disposition'] = f'attachment; filename="{name}"'
    email.attach(file1)


for name in all_file:
    # 获取所有文件名的文件后缀
    id = name.split(".")[1]
    if id == 'zip':
        zip_annex(name)
    elif id == 'jfif':
        jfif_annex(name)
    else:
        pdf_annex(name)



connect.sendmail('账号', '收件人账号', email.as_string())
connect.quit()  # 关闭连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值