数据分析学习笔记—python_word处理及邮件发送

本文详细介绍了如何使用Python发送文本、HTML格式邮件,并添加附件、抄送功能,以及创建邮件发送类进行封装。通过实例演示了如何配置邮箱、构造邮件内容并处理异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、word处理及邮件发送思维导图

在这里插入图片描述

2、邮件发送补充说明(给单人发送邮件)

(1)文本邮件发送

(1)思路
                    导入模块——配置邮箱——设置邮件主题、内容等——发送邮件
(2)代码实现
#导入需要的模块

#构建邮件头信息
from email.mime.multipart import MIMEMultipart
#构建邮件正文
from email.mime.text import MIMEText
#发送邮件
import smtplib

#配置邮箱

#设置发送邮箱地址
from_addr = 'xxxx@qq.com'
#设置邮箱授权码
password = 'xxxxxxx'
#设置收件邮箱地址
to_addr = '1351301736@qq.com'
#设置邮箱服务器地址(以QQ邮箱为例)
smtp_server = 'smtp.qq.com'
#SMTP协议加密端口
server = smtplib.SMTP_SSL(smtp_server,465)
#登录服务器邮箱
server.login(from_addr,password)

#设置邮件内容

#创建一个邮件信息对象
message = MIMEMultipart()
#设置发送邮箱地址为from
message['From'] = from_addr
#设置收件邮箱地址为To
message['To'] = to_addr
#设置邮件标题
message['Subject'] = '测试邮件'
#设置编码格式等
content_text = MIMEText('啥也不是,啥时候能毕业找到工作',"plain","utf-8")
message.attach(content_text)
#发送邮件,这里设置如果邮件发送失败的异常
try:
    #发送邮件
    server.sendmail(from_addr,[to_addr],message.as_string())
    #退出服务器邮箱
    server.quit()
    print('邮件发送成功')
except smtplib.SMTPException as e:
    server.quit()
    print('邮件发送失败',e)
(3)结果

在这里插入图片描述
在这里插入图片描述

(2) html邮件发送

思路差不多,做一些细节改变就可
代码块:

#导入需要的模块

#构建邮件头信息
from email.mime.multipart import MIMEMultipart
#构建邮件正文
from email.mime.text import MIMEText
#发送邮件
import smtplib

#配置邮箱

#设置发送邮箱地址
from_addr = 'xxx@qq.com'
#设置邮箱授权码
password = 'xxxxx'
#设置收件邮箱地址
to_addr = '1351301736@qq.com'
#设置邮箱服务器地址(以QQ邮箱为例)
smtp_server = 'smtp.qq.com'
#SMTP协议加密端口
server = smtplib.SMTP_SSL(smtp_server,465)
#登录服务器邮箱
server.login(from_addr,password)

#设置邮件内容

#创建一个邮件信息对象
message = MIMEMultipart()
#设置发送邮箱地址为from
message['From'] = from_addr
#设置收件邮箱地址为To
message['To'] = to_addr
#设置邮件标题
message['Subject'] = '测试邮件'
#打开读取html文件,读取为正文
with open('D:/tools/java/jdk1.8.0_271/README.html','rb') as f:
    content = f.read()
#设置编码格式等
    content_html = MIMEText(content,"html","utf-8")
message.attach(content_html)

#发送邮件,这里设置如果邮件发送失败的异常
try:
    #发送邮件
    server.sendmail(from_addr,[to_addr],message.as_string())
    #退出服务器邮箱
    server.quit()
    print('邮件发送成功')
except smtplib.SMTPException as e:
    server.quit()
    print('邮件发送失败',e)

在这里插入图片描述

(3)附件邮件发送(以图片附件为例)

#导入需要的模块

#构建邮件头信息
from email.mime.multipart import MIMEMultipart
#专门构建邮件标题
from email.header import Header
#构建邮件正文
from email.mime.text import MIMEText
#构建邮件附件
from email.mime.application import MIMEApplication
#发送邮件
import smtplib
#构建邮件图片
from email.mime.image import MIMEImage
import os

#配置邮箱

#设置发送邮箱地址
from_addr = 'xxxx@qq.com'
#设置邮箱授权码
password = 'xxxx'
#设置收件邮箱地址
to_addr = 'xxxx@qq.com'
#设置邮箱服务器地址(以QQ邮箱为例)
smtp_server = 'smtp.qq.com'
#SMTP协议加密端口
server = smtplib.SMTP_SSL(smtp_server,465)
#登录服务器邮箱
server.login(from_addr,password)

#设置邮件内容

#创建一个邮件信息对象
message = MIMEMultipart()
#设置发送邮箱地址为from
message['From'] = from_addr
#设置收件邮箱地址为To
message['To'] = to_addr
#设置邮件标题
message['Subject'] = '测试邮件'
#打开读取html文件
with open('D:/360Downloads/girl.jpg','rb') as f:
    img = f.read()
    image = MIMEImage(img)
#设置编码格式等
    content_html = MIMEText(content,"html","utf-8")
image.add_header('Content-Disposition','attachment',filename = ('utf-8','',os.path.basename('D:/360Downloads/girl.jpg')))
message.attach(image)

#发送邮件,这里设置如果邮件发送失败的异常
try:
    #发送邮件
    server.sendmail(from_addr,[to_addr],message.as_string())
    #退出服务器邮箱
    server.quit()
    print('邮件发送成功')
except smtplib.SMTPException as e:
    server.quit()
    print('邮件发送失败',e)

在这里插入图片描述

(4)添加抄送

message['Cc'] = 'xxxx@qq.com'

(5)封装邮件发送

其实并不难,最开始建立一个类,使用__init__,对输入的一些最基础的信息可以进行初始化,然后建立自己需要的方法,也就是发送文本邮件的操作,发送html邮件的操作,发送附件邮件的操作,最后再写一个发送邮件的操作,里面要包含异常处理,在前面的第二个方法里面的最后一句调用这个发送的操作的方法,然后实例化就行了。
接下来是我自己的代码模块,为了方便看有没有问题,我是三个都分别调用的,如果需要给多人发送邮件,修改修改啦

#导入需要的模块
from email.mime.multipart import MIMEMultipart
#专门构建邮件标题
from email.header import Header
#构建邮件正文
from email.mime.text import MIMEText
#构建邮件附件
from email.mime.application import MIMEApplication
#发送邮件
import smtplib
#构建邮件图片
from email.mime.image import MIMEImage
import os

class Mail_Send(object):
    def __init__(self,host,port,from_addr,password,to_addr):
        #服务地址
        self.host = host
        #端口号
        self.port = port
        #发件人邮箱
        self.from_addr = from_addr
        #授权码
        self.password = password
        #收件人地址
        self.to_addr = to_addr

    #发送文本邮件的方法
    def Mail_Send_Text(self,subject,contentPath):
        #创建一个邮件信息对象
        message = MIMEMultipart()
        #设置发送邮箱地址为from
        message['From'] = self.from_addr
        #设置收件邮箱地址为To
        message['To'] = self.to_addr
        #设置邮件标题
        message['Subject'] = subject
        #打开读取文件
#         import pdb; pdb.set_trace()  第一遍正文出了问题,断点调试用的代码
        with open(contentPath,'rb') as f:
            content = f.read()
            content_text = MIMEText(content,'plain','utf-8')
        message.attach(content_text)
        self.sendMail(message)
    
    def Mail_Send_html(self,subject,contentPath):
        message = MIMEMultipart()
        message['From'] = self.from_addr
        message['To'] = self.to_addr
        message['Subject'] = subject
        with open(contentPath,'rb') as f:
            content = f.read()
            content_text = MIMEText(content,'html','utf-8')
        message.attach(content_text)
        self.sendMail(message)
    
    
    def Mail_Send_add(self,subject,contentPath):
        message = MIMEMultipart()
        message['From'] = self.from_addr
        message['To'] = self.to_addr
        message['Subject'] = subject
        with open(contentPath,'rb') as f:
            img = f.read()
            image = MIMEImage(img)
            image.add_header('Content-Disposition','attachment',filename = ('utf-8','',os.path.basename('D:/360Downloads/girl.jpg')))
            message.attach(image)
        self.sendMail(message)
        
    def sendMail(self,message):
    
        #发送邮件,这里设置如果邮件发送失败的异常
        try:
            #SMTP协议加密端口
            server = smtplib.SMTP_SSL(self.host,self.port)
            #登录服务器邮箱
            server.login(self.from_addr,self.password)
            #发送邮件
            server.sendmail(self.from_addr,[self.to_addr],message.as_string())
            #退出服务器邮箱
            server.quit()
            print('邮件发送成功')
        except smtplib.SMTPException as e:
            server.quit()
            print('邮件发送失败',e)

email = Mail_Send('smtp.qq.com',465,'xxx@qq.com','xxx','xxx@qq.com')
email.Mail_Send_Text('测试邮件','D:/tools/python/python39/LICENSE.txt')
email.Mail_Send_html('html测试邮件','D:/tools/game/steam/ThirdPartyLegalNotices.html')
email.Mail_Send_add('测试','D:/360Downloads/girl.jpg')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深耕玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值