-
2020-12-04 08:23:44
class Carry_files_EmailSender(object):
def __init__(self):
self.smtp_host = smtp_host # 发送邮件的smtp服务器(QQ邮箱:"smtp.qq.com",163邮箱:"smtp.163.com")
self.smtp_from_email = smtp_from_email # 邮件发送者的邮箱
self.smtp_pwd = smtp_pwd # 邮件发送者的邮箱的授权码
self.smtp_port = smtp_port # smtp邮箱的端口,默认是465
def send_email(self, to_email_list, subject, body,files_part=None):
'''
发送邮件
param to_email_list: 收件人邮箱列表,格式["123@qq.com","123@163.com"]
param subject: 邮件主题,格式:"邮件主题"
param body: 邮件内容, 格式:"邮件所说的内容"
param files_part=None 发送的附件,默认不带附件,格式 r"E:\test.xlsx"
'''
msg= MIMEMultipart()
msg.attach(MIMEText(body, 'plain', 'utf-8'))
msg["From"] = self.smtp_from_email # 发件人
msg["To"] = ",".join(to_email_list) # 收件人列表,转换成string,用逗号隔开
msg["Subject"] = subject # 邮件标题
#上传指定文件构造附件
if os.path.exists(files_part):
filespart=MIMEApplication(open(files_part,'rb').read())
file_name=files_part.split("\\")[-1] #获取文件名
print("file_name=",file_name)
filespart.add_header("Content-Disposition","attachment",filename=file_name) #file_name是显示附件的名字,可随便自定义
msg.attach(filespart)
else:
print("加载的附件不存在,发送无附件邮件")
try:
SmtpSslClient = smtplib.SMTP_SSL(self.smtp_host, self.smtp_port) # 实例化一个SMTP_SSL对象
Loginer = SmtpSslClient.login(self.smtp_from_email, self.smtp_pwd) # 登录smtp服务器
print("登录结果:Loginer=", Loginer) # loginRes = (235, b'Authentication successful')
if Loginer[0] == 235:
print("登录成功,code=",Loginer[0])
SmtpSslClient.sendmail(self.smtp_from_email, to_email_list, msg.as_string()) # 发件人,收件人列表,邮件内容
print("mail has been send successfully,message:", msg.as_string())
print("发送成功")
SmtpSslClient.quit() # 退出邮箱
else:
print("邮件登录失败,发送失败。code=", Loginer[0], "message=", msg.as_string())
except Exception as e:
traceback.print_exc()
print("邮件发送失败,报错信息:", e)
if __name__=="__main__":
senders = Carry_files_EmailSender()
senders.send_email(["123456@qq.com", "123456@163.com"], "测试邮件发送的标题", "这是一个测试邮件发送的内容",r"E:\test\test.txt")
更多相关内容 -
python发送带附件的邮件
2018-09-26 16:34:57python发送带附件的邮件代码,大家可以看看哟。亲测无问题。 -
python发送带附件邮件
2021-03-05 20:03:12Python SMTP发送邮件SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对...Python SMTP发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
Python创建 SMTP 对象语法如下:
import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名,这个是可选参数。
port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。
local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。
Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]
参数说明:
from_addr: 邮件发送者地址。
to_addrs: 字符串列表,邮件发送地址。
msg: 发送消息
开发中我们要发送邮件需要带附件:
可采用email模块发送电子邮件附件。发送一个未知MIME类型的文件附件其基本思路如下:
构造MIMEMultipart对象做为根容器
构造MIMEText对象做为邮件显示内容并附加到根容器
构造MIMEBase对象做为文件附件内容并附加到根容器
a. 读入文件内容并格式化
b. 设置附件头
设置根容器属性
得到格式化后的完整文本
用smtp发送邮件
实例代码:
def send_report_email(self,file_path,emails):
‘’’’’
@subject:邮件主题
@msg:邮件内容
@toaddrs:收信人的邮箱地址
@fromaddr:发信人的邮箱地址
@smtpaddr:smtp服务地址,可以在邮箱看,比如163邮箱为smtp.163.com
@password:发信人的邮箱密码
‘’’
fromaddr = config.get('fromaddr',"")
smtpaddr = config.get('smtpaddr',"")
password = config.get('password',"")
# toaddrs = ["Dong_Jie@want-want.com"]
toaddrs = emails
subject = "售货机结算表"
msg = "本周期售货机结算表"
mail_msg = MIMEMultipart()
if not isinstance(subject, unicode):
subject = unicode(subject, 'utf-8')
mail_msg['Subject'] = subject
mail_msg['From'] = fromaddr
mail_msg['To'] = ','.join(toaddrs)
mail_msg.attach(MIMEText(msg, 'html', 'utf-8')) # 构造MIMEBase对象做为文件附件内容并附加到根容器
data = open(file_path, 'rb') ## 读入文件内容并格式化 [方式1]
ctype,encoding = mimetypes.guess_type(file_path)
if ctype is None or encoding is not None:
ctype = 'application/octet-stream'
maintype,subtype = ctype.split('/',1)
file_msg = email.MIMEBase.MIMEBase(maintype, subtype)
file_msg.set_payload(data.read())
Encoders.encode_base64(file_msg)#把附件编码
data.close()
basename = os.path.basename(file_path)
file_msg.add_header('Content-Disposition','attachment', filename = basename)#修改邮件头
mail_msg.attach(file_msg)
try:
s = smtplib.SMTP()
s.connect(smtpaddr) # 连接smtp服务器
s.ehlo()
s.starttls()
s.ehlo
s.login(fromaddr, password) # 登录邮箱
s.sendmail(fromaddr, toaddrs, mail_msg.as_string()) # 发送邮件
s.quit()
_logger.info("邮件发送成功")
except Exception, e:
print "Error: unable to send email"
_logger.info("邮件发送失败")
其中需要发送的附件需要进行压缩成zip格式,代码如下:
def zip_dir(dirname, zipfilename):
filelist = []
if os.path.isfile(dirname):
filelist.append(dirname)
else:
for root, dirs, files in os.walk(dirname):
for name in files:
filelist.append(os.path.join(root, name))
zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED)
for tar in filelist:
arcname = tar[len(dirname):]
arcname = arcname.encode('GBK') #兼容windows平台,转为gbk,支持简体和繁体
zf.write(tar, arcname)
zf.close()
还需要配置我们自己的邮件发送服务器和发送邮箱,需要配置在odoo.conf中:
fromaddr = svmaccount@want-want.com
smtpaddr = 10.0.1.239
password = P@ssw0rd
最后手动执行任务测试邮件发送且带有zip附件,邮件发送成功。
-
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2020-09-19 03:39:39主要介绍了python 实现的发送邮件模板,包含Python发送普通邮件、带附件及带图片邮件相关实现技巧,需要的朋友可以参考下 -
Python 发送带 附件 邮件 脚本
2021-04-27 01:28:30Python发送普通邮件的脚本参考:Python发送RMAN备份Log脚本在这篇里主要演示一个Python发送附件邮件的脚本。参考Pytheon文档:Python版本:2.4.3https://www.cndba.cn/Dave/article/417[oracle@rac1 ~]$ cat ...Python发送普通邮件的脚本参考:
Python发送RMAN备份Log脚本
在这篇里主要演示一个Python发送附件邮件的脚本。
参考Pytheon文档:
Python版本:2.4.3
https://www.cndba.cn/Dave/article/417
[oracle@rac1 ~]$ cat sendAttEmail.py
#!/usr/bin/python
#coding=gbk
#created by tianlesoftware
#2011/4/12
import os
import sys
import smtplib
import mimetypes
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
from email.MIMEMultipart import MIMEMultipart
#红色标记的修改成自己的信息
SMTP_SERVER='192.168.1.100'
EMAIL_USER=user
EMAIL_PASSWD=pwd
EMAIL_SUBJECT='This is a test email'
TO_USERS=['dvd.dba@gmail.com','tianlesoftware@vip.qq.com']
def mysendmail(fromaddr,toaddrs,subject):
COMMASPACE=','
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = COMMASPACE.join(toaddrs)
msg['Subject'] = subject
#邮件内容
https://www.cndba.cn/Dave/article/417
txt = MIMEText("this is the contents of the email!")
msg.attach(txt)
#添加附件https://www.cndba.cn/Dave/article/417
fileName = r'/home/oracle/awr.html'
ctype, encoding = mimetypes.guess_type(fileName)
if ctype is None or encoding is not None:
ctype = 'application/octet-stream'
maintype, subtype = ctype.split('/', 1)
att = MIMEImage((lambda f: (f.read(), f.close()))(open(fileName, 'rb'))[0], _subtype = subtype)
att.add_header('Content-Disposition', 'attachment', filename = fileName)https://www.cndba.cn/Dave/article/417
msg.attach(att)
https://www.cndba.cn/Dave/article/417https://www.cndba.cn/Dave/article/417
#添加附件,如果有多个附件,就多添加几个
fileName = r'/home/oracle/awr.html'
ctype, encoding = mimetypes.guess_type(fileName)
if ctype is None or encoding is not None:
ctype = 'application/octet-stream'
maintype, subtype = ctype.split('/', 1)
att = MIMEImage((lambda f: (f.read(), f.close()))(open(fileName, 'rb'))[0], _subtype = subtype)
att.add_header('Content-Disposition', 'attachment', filename = fileName)
msg.attach(att)
server.login(EMAIL_USER,EMAIL_PASSWD)
server.sendmail(fromaddr,toaddrs,msg.as_string())
server.quit()
if __name__=='__main__':
mysendmail(FROM_USER, TO_USERS, EMAIL_SUBJECT)
#print 'send successful'
https://www.cndba.cn/Dave/article/417https://www.cndba.cn/Dave/article/417
版权声明:本文为博主原创文章,未经博主允许不得转载。
oracle 脚本
-
利用Python发送邮件或发带附件的邮件
2020-12-16 20:48:091、使用Python发Text 邮件 import smtplib # 发送字符串的邮件 from email.mime.text import MIMEText # 设置服务器所需信息 fromEmailAddr = '发件人邮箱地址' # 邮件发送方邮箱地址 password = 'email password... -
Python3使用SMTP发送带附件邮件
2020-09-20 08:51:51主要为大家详细介绍了Python3使用SMTP发送带附件邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
Python3实现带附件的定时发送邮件功能
2020-09-20 18:02:21主要为大家详细介绍了Python3实现带附件的定时发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
基于python发送邮件的乱码问题的解决办法
2020-12-19 14:15:39公司项目中需要通过后台发送邮件,邮件内容包括图片附件。如果通过PHPmailer发送...但是,在通过python发送邮件,却遇到了乱码的问题。在调试过程中出现了以下现象: 1、中文与英文字母结合出现乱码。 2、回复邮件人的 -
Python如何发送一个带附件的邮件
2021-03-03 16:40:08test_Time = str(time.strftime("%Y-%m-%d", time.localtime())) test_file_name = test_Time + "__Report.html" #创建一个带附件的实例 msg = MIMEMultipart() # 如果一封邮件中含有附件,那邮件的中必须定义...Python+HTMLTestRunner+Tomcat自动生成测试报告,并以邮件的方式发送
from email.header import Header from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart import HTMLTestRunner import sys,smtplib,time,os,unittest from email.mime.text import MIMEText from baigui_testcase import test_products,test_recommend,test_skuprice #导入对应的case sys.path.append('Macintosh HD/Users/lidada/PycharmProjects/baigui') now=time.strftime('%Y%m%d %H%M%S') #定义全局时间变量 #将多个.py文件一起执行 suite=unittest.TestSuite() suite.addTest(unittest.makeSuite(test_products.TestProduct)) #test_products是.py的文件名,TestProduct是这个文件里的类名 suite.addTest(unittest.makeSuite(test_recommend.TestRecommend)) suite.addTest(unittest.makeSuite(test_skuprice.TestSkuprice))
#-----------------查找测试报告目录,找到最新生成的测试报告文件----------- def newReport(testReport): lists=os.listdir(testReport) #返回测试报告所在目录下的所有文件列表 lists2=sorted(lists) #获得按升序排序后的测试报告列表 file_new=os.path.join(testReport,lists2[-1]) #获取最后一个即最新的测试报告地址 print (file_new) return file_new
#-----------------发送邮件---------------------------- def sendReport(file_new): # 多个接收邮箱单个收件人的话,直接是receiver = 'XXX@126.com' # receiver = 'xxx@163.com' #['XXX@126.com', 'XXX@126.com', 'XXX@doov.com.cn'] sender = 'xxx@163.com' receiver = 'xxx@163.com' CC='xxx@163.com' # 附件的名称 test_Time = str(time.strftime("%Y-%m-%d", time.localtime())) test_file_name = test_Time + "__Report.html" #创建一个带附件的实例 msg = MIMEMultipart() # 如果一封邮件中含有附件,那邮件的中必须定义multipart/mixed类型 # 邮件对象 msg['Subject']=Header(u'xx接口自动化测试报告') # 邮件的主题,用到from email.header import Header msg['From']=sender#写邮件的人 msg['To']=receiver #主要发送给的人 多个收件人时: ";".join(receiver) msg['Cc']=CC #抄送的人 # 正文模块,获取最新的报告做为正文 # with open(file_new, 'rb') as f: 此写法也可以 # msg_raw = f.read() msg_raw = open(file_new, "rb").read() msg_total= MIMEText(msg_raw, 'html','utf-8') #构造MIMEText对象时,第一个参数就是邮件正文,第二个参数是MIME的subtype # 传入'HTML'表示HTML格式, 最后一定要用utf-8编码保证多语言兼容性 # 添加到MIMEMultipart: msg.attach(msg_total) # 附件模块 mfile = MIMEApplication(open(file_new, "rb").read()) # 添加附件的头信息 mfile.add_header('Content-Disposition', 'attachment', filename=test_file_name) # 附件模块添加到MIMEMultipart: msg.attach(mfile) smtp=smtplib.SMTP_SSL('smtp.exmail.qq.com',port=465) #端口smtp smtp.login('xxx@163.com', "xxxxxx")#登录邮箱的账号密码 smtp.sendmail(sender,receiver,msg.as_string()) #参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串 smtp.quit() # 发送完毕后退出smtp print ('邮件发送成功,请查收!')
if __name__=='__main__': test_report='/Users/lidada/Tools/apache-tomcat-9.0.22/webapps/report' #测试报告所在目录 filePath='/Users/lidada/Tools/apache-tomcat-9.0.22/webapps/report/report'+now+'.html' #通过加入报告生成时间,区分报告名称,否则报告会被覆盖 fp=open(filePath.encode(),'wb') #打开文件,以二进制方式将结果写入文件 runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'xx自动化测试报告',description=u'xx接口测试,接口详情见附件') runner.run(suite) #执行测试,调用测试套件返回结果 fp.close() #关闭文件,打开文件后一定要关闭文件,否则会占用资源 sendReport(filePath) #发送最新的测试报告
-
Python 简单发送邮件 / 发送带各种附件邮件
2018-06-04 13:55:05写个自动发送邮件的python脚本。 用脚本发送邮件思路是:登陆邮箱-->写邮件-->发送邮件 发送邮箱设置: 得开通自己邮箱的 SMTP 功能,具体可百度。 以163网易邮箱为例: 设置 --> POP3/SMTP/IMAP --&... -
python smtplib发送带附件邮件小程序
2020-09-20 11:31:59主要为大家详细介绍了python smtplib发送带附件邮件小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
python实现带附件邮件的发送
2022-02-10 14:55:54import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header ...#用邮箱实现带附件邮件发送 class AttachmentEmailSender(object): def __init -
python 发送带附件邮件到钉钉邮箱+邮件内容带有表格
2019-10-30 11:59:31# smtplib这个模块是管发邮件 from email.mime.text import MIMEText # 构造邮件内容 from email.mime.multipart import MIMEMultipart import re import os from bs4 import Beauti... -
python SMTP实现发送带附件电子邮件
2020-09-20 11:34:32主要为大家详细介绍了python SMTP实现发送带附件电子邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
python3使用smtp发送带附件邮件
2018-11-05 17:52:21python3使用smtpib利用第三方smtp服务器发送带附件邮件。 -
python3通过qq邮箱发送邮件以及附件
2020-09-16 20:34:58主要为大家详细介绍了python3通过qq邮箱发送邮件以及附件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
Python发送邮件(带附件)
2020-12-02 11:22:09import smtplib #发送邮件模块from email.mime.textimport MIMEText #定义邮件内容from email.mime.multipartimport MIMEMultipart #用于传送附件#发送邮箱服务器smtpserver=‘smtp.163.com‘#发送邮箱用户名密码... -
python发送邮件示例(支持中文邮件标题)
2020-12-25 04:57:27复制代码 代码如下:def sendmail(login={},mail={}): ”’\ @param login login[‘user’] login[‘passwd’] @param mail mail[‘to_addr’] mail[‘subject’] mail[‘content’] mail[‘attach’] ”’ from... -
Python实现Smtplib发送带有各种附件的邮件实例
2020-09-21 07:29:50本篇文章主要介绍了Python实现Smtplib发送带有各种附件的邮件实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
Python中Django发送带图片和附件的邮件
2020-09-21 09:22:55本篇文章主要介绍了Python中Django发送带图片和附件的邮件 ,非常具有实用价值,需要的朋友可以参考下。 -
利用python实现发送带附件的邮件
2020-12-30 05:16:57具体代码如下:(相关推荐:python基础教程)fromdjango.templateimportloaderfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMETextfromemail.... -
python 发送带有附件的邮件
2020-12-23 03:24:44time,os,zipfile,mimetypesclassSendEmail():"""发送邮件""" defsend_eamil(self):try: message=self.data() smtpObj=smtplib.SMTP_SSL(email['host'],465) smtpObj.login(email['username'],email['password']) ... -
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2020-12-25 04:04:30可以使用Python的email模块来实现带有附件的邮件的发送。 SMTP (Simple Mail Transfer Protocol)邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送... -
如何使用Python发送带有.csv附件的电子邮件
2020-12-19 14:57:11使用适当的MIME类型发送多部分电子邮件。所以可能是这样(我测试过):import smtplibimport mimetypesfrom email.mime.multipart import MIMEMultipartfrom email import encodersfrom email.message import Message...