python django 邮件发送测试报告给指定发件人,测试报告支持自定义上传
HTML代码:
<form class="form-horizontal" action="/MailTest/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">发件人邮箱:</label>
<div class="col-sm-5">
<input type="text" class="form-control" placeholder="请输入发件人邮箱" name="from_addr">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">发件人邮箱密码:</label>
<div class="col-sm-5">
<input type="text" class="form-control" placeholder="发件人邮箱密码" name="password">
</div>
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">SMTP服务器地址:</label>
<div class="col-sm-5">
<input type="text" class="form-control" placeholder="SMTP服务器地址" name="smtp_addr">
</div>
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">收件人邮箱:</label>
<div class="col-sm-5">
<input type="text" class="form-control" placeholder="请输入收件人邮箱" name="to_addrs">
</div>
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">邮件主题:</label>
<div class="col-sm-5">
<input type="text" class="form-control" placeholder="邮件主题" name="subject">
</div>
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">邮件内容:</label>
<div class="col-sm-5">
<input type="text" class="form-control" placeholder="邮件内容" name="msg">
</div>
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">测试报告:</label>
<div class="col-sm-5">
<input type="file" class="form-control" name="testFile">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-info">发送邮件</button>
</div>
</div>
</form>
sendMailTest获取post的参数:
def sendMailTest(request):
from_addr = request.POST['from_addr']
smtp_addr = request.POST['smtp_addr']
to_addrs = request.POST['to_addrs']
subject = request.POST['subject']+time.strftime("%Y-%m-%d %H-%M-%S")
password = request.POST['password']
msg = request.POST['msg']
testFile = request.FILES.getlist('testFile')
testFile1=''
for f in testFile:
for chunk in f.chunks():
testFile1+=chunk.decode()19 mess = {}
if from_addr !='' and smtp_addr !='' and to_addrs !='' and password !='':
common = Common()
status = common.SendMail(subject,msg,to_addrs,from_addr,smtp_addr,password,testFile1)
print (status)
if status ==1:
mess['status'] = '发送邮件成功'
elif status==0:
mess['status'] = '发送邮件失败'
elif request.POST['from_addr'] =='' or request.POST['password'] == '' or to_addrs == '' or smtp_addr =='' or subject == '':
mess['status'] = '请填写发件人、收件人、密码、邮箱服务器地址、主题'
return render(request, "sendMail.html", mess)
SendMail发送带附件的邮件
def SendMail(self,subject,msg,to_addrs,from_addr,smtp_addr,password,testFile):
'''
@subject:邮件主题
@msg:邮件内容
@to_addrs:收信人的邮箱地址
@from_addr:发信人的邮箱地址
@smtp_addr:smtp服务地址,可以在邮箱看,比如163邮箱为smtp.163.com
@password:发信人的邮箱密码
'''
mail_msg = MIMEMultipart() #创建一个带附件实例
#构造附件test.docx
att1 = MIMEText(testFile, 'base64', 'gb2312')
att1["Content-Type"] = 'application/octet-stream'
att1.add_header('Content-Disposition', 'attachment', filename=u'测试报告.html')
mail_msg.attach(att1)
#构建MIMEText纯文本内容
txt = MIMEText(msg,'plain', 'utf-8')
mail_msg.attach(txt)
mail_msg['Subject'] = subject
mail_msg['From'] =from_addr
mail_msg['To'] = ','.join(to_addrs)
try:
s = smtplib.SMTP()
s.connect(smtp_addr) #连接smtp服务器
s.login(from_addr,password) #登录邮箱
s.sendmail(from_addr, to_addrs, mail_msg.as_string()) #发送邮件
s.quit()
print ('success')
return 1
except Exception as e:
print (str(e))
return 0
python 3抛出异常用 except Exception as e 而不是except Exception, e