python3 发送邮件携带附件(可携带多个不同格式的附件)

最近在学习python,刚刚看完python3使用SMTP发送邮件,简单小节下。

要了解SMTP的可以自行去百度,这里不做解释。

使用SMTP发送有邮件前要确保发件人的邮箱已开启SMTP服务。若发件人邮箱已开启此服务可跳过此教程直接参考代码。

一、163邮箱开启SMTP方式

1.登陆163邮箱网页版,进入"POP3/SMTP/IMAP"页面,开启smtp服务,一般默认开启,

直接去生成授权码即可。

2、生成客户端授权码,进入"客户端授权密码"页面,开启客户端授权码。

3、选择开启后需要进行短信验证

 4、身份验证完成后进入设置授权码页面,自己设置就好了。

二、qq邮箱开启SMTP服务

1、登陆qq邮箱,进入设置也页面。

2、在账户页面找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务开启服务,开启时生成的授权码可以用于第三方登陆。

 三、根据自己的实际使用的邮箱开启SMTP服务后,接下来就直接看代码

 1  1 import smtplib
 2  2 from email.header import Header
 3  3 from email.mime.text import MIMEText
 4  4 from email.mime.multipart import MIMEMultipart
 5  5 from email.header import  make_header
 6  6 class Email():
 7  7     def send(self,xx,receiver,copy_to,mail_title,text_part) 8  8
 9  9         sender = ‘[email protected]‘
10 10         receiver = receiver
11 11         copy_to =  copy_to
12 12         smtpserver = ‘smtp.163.com‘       #邮箱服务器,163邮箱为smtp.163.com,qq邮箱为smtp.qq.com,根据实际情况选择
13 13         username = ‘[email protected]‘  #邮箱账号
14 14         # 如果是163邮箱,这里的密码是163的授权码而不是登陆密码。qq邮箱使用qq邮箱生成的授权吗。
15 15         password = ‘xxxxxx‘
16 16         mail_title = mail_title
17 17
18 18         # 创建一个带附件的实例
19 19         message = MIMEMultipart()
20 20         message[‘From‘] = sender  #发件人邮箱
21 21
22 22
23 23         message[‘To‘] = ‘,‘.join(receiver ) #将列表中的收件人拼接成用“,”连接的字符串
24 24         25 25         message[‘Cc‘] = ‘,‘.join(copy_to )
26 26         message[‘Subject‘] = Header(mail_title, ‘utf-8‘)
27 27         message.attach(MIMEText(text_part, ‘plain‘, ‘utf-8‘))
28 28
29 29         att = []
30 30         #通过循环统计附件个数,便于添加添加附件
31 31         for j in range(len(xx)):
32 32             att.append(j)
33 33         #通过for循环添加附件,这里的xx表示附件路径,xx为list
34 34         for i in range(len(xx)):35 35             print(xx[i-1].split("/")[-1])
36 36             path_file = xx[i-1]   #获取列表中的单个文件路径
37 37             file= xx[i-1].split("/")[-1]#获取附件名称
38 38             att[i]= MIMEText(open(path_file,‘rb‘).read(),‘base64‘,‘utf-8‘)
39 39             att[i]["Content-Type"] = ‘application/octet-stream;name="%s"‘ % make_header([(file, ‘UTF-8‘)]).encode(‘UTF-8‘)#解决附件中文名乱码问题
40 40             att[i]["Content-Disposition"] = ‘attachment;filename= "%s"‘ % make_header([(file, ‘UTF-8‘)]).encode(‘UTF-8‘)
41 41             message.attach(att[i])
42 42
43 43         try:
44 44             smtpObj = smtplib.SMTP_SSL()  # 注意:如果遇到发送失败的情况(提示远程主机拒接连接),这里要使用SMTP_SSL方法
45 45             smtpObj.connect(smtpserver)
46 46             smtpObj.login(username, password)
47 47             smtpObj.sendmail(sender, receiver+copy_to, message.as_string())#receiver+copy_to收件人和抄送对象需要放在同一列表中
48 48             print("邮件发送成功!!!")
49 49             smtpObj.quit()
50 50         except:
51 51             print (‘邮件发送失败‘)
52 52             smtpObj.quit()
53 53 if __name__ == ‘__main__‘:
54 54     xx = [‘附件路径1‘,‘附件路径2‘]#附件路径以列表形式传。附件路径要用“/”方式表示,可以改为“\\"或”\",需要修改第35和37行代码中的“/”
55 56     receiver = [‘[email protected]‘,‘[email protected]‘]#收件人多个人时以列表方式传入,否则只有第一个人能收到
56 57     copy_to =  [‘[email protected]‘,‘[email protected]‘]#抄送对象
57 58
58 59     mail_title = ‘邮件主题‘
59 60     text_part = ‘邮件正文‘
60 61     email = Email()
61 62     email.send(xx,receiver,copy_to,mail_title,text_part)

以上代码可以实现同时是发送,抄送邮件给多人,也可携带多个任意格式的附件,但该代码的缺陷,邮件发送成功后发件人看不到附件,收件人可以正常查看。等有时间时在做修改把。

以上代码参考于  https://blog.csdn.net/kunshanyuZ/article/details/78824971

小白第一次写,请各位大佬多多指教

原文地址:https://www.cnblogs.com/ceshixiaobai/p/10312060.html

时间: 2024-08-07 18:16:26

python3 发送邮件携带附件(可携带多个不同格式的附件)的相关文章

python3发送邮件

#163邮箱发送邮件import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr 发件人邮箱账号 my_sender = '[email protected]' 发件人邮箱密码 密码不是真正的密码是 授权码,授权码是用于登录第三方邮件客户端的专用密码. my_pass = 'XXXXX' 收件人邮箱账号,我这边发送给自己 my_user = '[email protected]' def

python3 发送邮件功能

阿-_-涵的博客 #首先写一个模块功能,发邮件功能打包起来 from smtplib import SMTP from email.mime.text import MIMEText def send_email(SMTP_host, from_addr, password, to_addrs, subject='', content=''): email_client = SMTP(host=SMTP_host) email_client.login(from_addr, password)

python3 发送邮件

import smtplibfrom email.mime.text import MIMETextdef SendEmail(fromAdd,toAdd,subject,text): _pwd = "[email protected]" #授权码 msg = MIMEText(text) msg["Subject"] = subject msg["From"] = fromAdd msg["To"] = toAdd try:

python3中urllib.request.urlopen.read读取的网页格式问题

#!/usr/bin/env python3 #-*- coding: utf-8 -*- #<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102eo83.html"><论电影的七个元素>——关于我对电…</a> import urllib.request str0 =r' <a title="

python发送邮件的脚本

python发送邮件的脚本,带有邮件内容与附件,邮件内容为串格式,附件为文件.如果想把某个目录下的所有文件当作附件发送,那请去掉注释. 代码如下: #!/usr/bin/python #coding utf-8 from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email import Utils, E

通用附件管理功能改善

在物料清单功能中,常常需要借助于外部形象的解释来更深刻的了解物料清单.比如我们在介绍物料清单时,会用下面的图表来辅助说明: 这样一来就很容易理解.而这样的图片又和ERP中物料清单本身关联不多,于是这些形象的解释性功能被放进附件中. 在新发布的ERP系统中,有以下附件管理功能改善 1 增加DWG格式的附件浏览功能.可在线查看Auto CAD 格式的附件. 在一些行业,物料清单的来源为产品的装配科,对照着装配图解释物料清单,形象生动. 2 增加批量上传附件功能. 为提高用户的工作效率,可以通用选择一

电子邮件系统帐户集成

.NET ERP系统 电子邮件系统帐户集成 为保证ERP系统的信息流准确快速的传递,需要给系统设计一个消息盒子机制.当系统中发生业务操作后,需要提醒下一个环节的操作人员,以保证ERP信息流快速准确传递.比如生产任务单(工作单,加工单,制单)过帐完成后,需要通知仓库准备材料供车间领料生产.消息盒子的界面大致如下所示: 消息盒子包含业务通知(Messages)和工作流审批(Workflow).业务通知比如采购人员下达采购订单PO后,需要通知仓库人员准备收货.工作流审批是以审批为基础的单据流程控制.

Python3 使用smtplib和email模块发送邮件

SMTP (Simple Mail Transfer Protocol) 邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接收者的邮件服务器.SMTP协议只能用来发送邮件,不能用来接收邮件.大多数的邮件发送服务器 (Outgoing Mail Server) 都是使用SMTP协议.SMTP协议的默认TCP端口号是25. SMTP协议的一个重要特点是它能够接力传送邮件.它工作在两种情况下:一是电子邮件从客户机传输到服务器:二是从某一个服务器传输到另

[Python3]SMTP发送邮件

概述 在本文中,主要介绍使用smtplib进行文本格式.HTML格式和带附件的邮件发送处理. 导入smtplib模块 import smtplib 关键函数说明 # 创建smtp对象 smtp = smtplib.SMTP([host [, port [, localhost]]] ) # 参数说明 # host: smtp服务地址,例如126邮箱的是:smtp.126.com # port: smtp服务端口 # localhost: 如果你的smtp服务在本机,则只需指定localhost即