文章目录
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')