python3实现带多张图片、附件的邮件发送
作者:SoaringXu 发布时间:2023-05-11 06:51:10
标签:python3,邮件发送
本文实例为大家分享了python3实现多张图片附件邮件发送的具体代码,供大家参考,具体内容如下
直接上代码,没有注释!
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header
class Mail(object):
def __init__(self, host, nickname, username, password, postfix):
self.host = host
self.nickname = nickname
self.username = username
self.password = password
self.postfix = postfix
def send_mail(self, to_list, subject, content, cc_list=[], encode='gbk', is_html=True, images=[]):
me = str(Header(self.nickname, encode)) + "<" + self.username + "@" + self.postfix + ">"
msg = MIMEMultipart()
msg['Subject'] = Header(subject, encode)
msg['From'] = me
msg['To'] = ','.join(to_list)
msg['Cc'] = ','.join(cc_list)
if is_html:
mail_msg = ''
for i in range(len(images)):
mail_msg += '<p><img src="cid:image%d" height="240" width="320"></p>' % (i+1)
msg.attach(MIMEText(content + mail_msg, 'html', 'utf-8'))
for i, img_name in enumerate(images):
with open(img_name, 'rb') as fp:
img_data = fp.read()
msg_image = MIMEImage(img_data)
msg_image.add_header('Content-ID', '<image%d>' % (i+1))
msg.attach(msg_image)
# 将图片作为附件
# image = MIMEImage(img_data, _subtype='octet-stream')
# image.add_header('Content-Disposition', 'attachment', filename=images[i])
# msg.attach(image)
else:
msg_content = MIMEText(content, 'plain', encode)
msg.attach(msg_content)
try:
s = smtplib.SMTP()
# s.set_debuglevel(1)
s.connect(self.host)
s.login(self.username, self.password)
s.sendmail(me, to_list + cc_list, msg.as_string())
s.quit()
s.close()
return True
except Exception as e:
print(e)
return False
def send_mail(to_list, title, content, cc_list=[], encode='utf-8', is_html=True, images=[]):
content = '<pre>%s</pre>' % content
m = Mail('smtp.163.com', 'TV-APP TEST', 'tvapp_qa', 'ujlnluutpfespgxz', '163.com')
m.send_mail(to_list, title, content, cc_list, encode, is_html, images)
if __name__ == '__main__':
images = [
'1.png',
'2.png',
'3.png',
'4.png',
]
import time
title = 'new images %s' % time.strftime('%H:%M:%S')
content = 'this is attach images %s' % time.time()
send_mail(['x@163.com'], title, content, ['xx@163.com', 'xxx@163.com'], 'utf-8', True, images)
后记
调试发送多张图片的时候遇到的问题:
用for循环生成的mail_msg,不能直接attach,需要和content一起attach
mail_msg = ''
for i in range(len(images)):
mail_msg += '<p><img src="cid:image%d" height="240" width="320"></p>' % (i+1)
msg.attach(MIMEText(**content** + mail_msg, 'html', 'utf-8'))
来源:https://blog.csdn.net/weixin_44152831/article/details/89214911
0
投稿
猜你喜欢
- 一个网站程序,在添加新闻时出现错误以下是错误提示: Microsoft OLE DB Provide
- 本文分享了php结合ajax实现无刷新上传图片的实例代码,分享给大家,希望大家可以和小编一起学习学习,共同进步。1.引入文件<!--图
- 1、删除Oracal在注册表中的主项:regedit.exe->LocalMachine->Software->Oracl
- 本文实例讲述了Golang最大递减数算法问题。分享给大家供大家参考,具体如下:给出一个非负整数,找到这个非负整数中包含的最大递减数。一个数字
- 如何正确理解和使用Command、Connection和 Recordset三个对象?我知道它们都是连接数据库的“好手”,但在编程的具体应用
- 解决Microsoft VBScript 运行时错误 (0x800A0046) 没有权限的解决方案,0x800a0046错误。前段时间在做站
- 当你提交一个查询的时候,MySQL会分析它,看是否可以做一些优化使处理该查询的速度更快。这一部分将介绍查询优化器是如何工作的。如果你想知道M
- 在VBScript中,有一个On Error Resume Next语句,它使脚本解释器忽略运行期错误并继续脚本代码的执行。接着该脚本可以检
- 概述可以获取的数据包括:video-视频模块user-用户模块dynamic-动态模块这次用“Running Man”十周年特辑的视频,来做
- 今天我去隽辰的博客去看他的文章,在读完他的文章之后,我很自然的就去读网友们给他留的评论,在读的时候我发现他的评论是顺序的,也就是最早的评论在
- 前言GO语言在WEB开发领域中的使用越来越广泛,Hired 发布的《2019 软件工程师状态》报告中指出,具有 Go 经验的候选人是迄今为止
- //********************************************************************
- 假设有一名为"addnewuser"的存储过程,其内容如下:Create PROCEDURE dbo
- PHP 异常处理异常用于在指定的错误发生时改变脚本的正常流程。异常是什么异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情
- 校勘(collation)是指对代码页、字母大小写、音调、语言和字母表的整理,很多校勘都是在数据进入数据库之前进行的,根据我的经验,北美的大
- Application Name(应用程序名称):应用程序的名称。如果没有被指定的话,它的值为.NET SqlClient Data Pro
- 这篇文章详细的介绍了Oracle数据库SQL语句性能调整的基本原则,具体内容请参考下文。一、问题的提出在应用系统开发初期,由于开发数据库数据
- 完美解决“换另一台电脑上用VS2008继续开发web项目时出现 “System.Runtime.InteropServices.COMExc
- 如下所示:interval=stats.t.interval(a,b,mean,std)t分布的置信区 间a:置信水平b:检验量的自由度me
- 如何使用Index Server建立一个网站导航地图?程序代码如下:<html><head><title>asp教程之网站导航 -