zoukankan      html  css  js  c++  java
  • python django 测试报告 发送邮件

    记录下python dajango 发送邮件:

    python django 邮件发送测试报告给指定发件人,测试报告支持自定义上传文件,以后更新,可支持发送多个收件人列表

    HTML代码:

     1 <form class="form-horizontal" action="/MailTest/" method="post" enctype="multipart/form-data">
     2     {% csrf_token %}
     3     <div class="form-group">
     4       <label for="inputEmail3" class="col-sm-2 control-label">发件人邮箱:</label>
     5       <div class="col-sm-5">
     6         <input type="text" class="form-control"  placeholder="请输入发件人邮箱" name="from_addr">
     7       </div>
     8     </div>
     9     <div class="form-group">
    10         <label for="inputPassword3" class="col-sm-2 control-label">发件人邮箱密码:</label>
    11         <div class="col-sm-5">
    12           <input type="text" class="form-control"  placeholder="发件人邮箱密码" name="password">
    13         </div>
    14        </div>
    15        <div class="form-group">
    16       <label for="inputEmail3" class="col-sm-2 control-label">SMTP服务器地址:</label>
    17       <div class="col-sm-5">
    18         <input type="text" class="form-control"  placeholder="SMTP服务器地址" name="smtp_addr">
    19       </div>
    20     </div>
    21     <div class="form-group">
    22       <label for="inputEmail3" class="col-sm-2 control-label">收件人邮箱:</label>
    23       <div class="col-sm-5">
    24         <input type="text" class="form-control"  placeholder="请输入收件人邮箱" name="to_addrs">
    25       </div>
    26     </div>
    27     <div class="form-group">
    28       <label for="inputEmail3" class="col-sm-2 control-label">邮件主题:</label>
    29       <div class="col-sm-5">
    30         <input type="text" class="form-control"  placeholder="邮件主题" name="subject">
    31       </div>
    32     </div>
    33     <div class="form-group">
    34       <label for="inputEmail3" class="col-sm-2 control-label">邮件内容:</label>
    35       <div class="col-sm-5">
    36         <input type="text" class="form-control"  placeholder="邮件内容" name="msg">
    37       </div>
    38        </div>
    39 
    40     <div class="form-group">
    41       <label for="inputEmail3" class="col-sm-2 control-label">测试报告:</label>
    42       <div class="col-sm-5">
    43         <input type="file" class="form-control"  name="testFile">
    44       </div>
    45     </div>
    46     
    47     
    48     
    49     <div class="form-group">
    50       <div class="col-sm-offset-2 col-sm-10">
    51         <button type="submit" class="btn btn-info">发送邮件</button>
    52       </div>
    53     </div>
    54 </form>

    sendMailTest获取post的参数:

     1  def sendMailTest(request):
     5         from_addr = request.POST['from_addr']
     6         smtp_addr = request.POST['smtp_addr']
     7         to_addrs = request.POST['to_addrs']
     8         subject = request.POST['subject']+time.strftime("%Y-%m-%d %H-%M-%S")
     9         password = request.POST['password']
    10         msg = request.POST['msg'] 
    11 
    12         testFile = request.FILES.getlist('testFile')
    13         testFile1=''
    14         for f in testFile:      
    15            
    16             for chunk in f.chunks():
    17                 testFile1+=chunk.decode()19         mess = {}
    20         if from_addr !='' and smtp_addr !='' and to_addrs !='' and password !='':
    21             common = Common()
    22             status = common.SendMail(subject,msg,to_addrs,from_addr,smtp_addr,password,testFile1)
    23             print (status)
    24             if status ==1:
    25                 mess['status'] = '发送邮件成功'
    26             elif status==0:
    27                  mess['status'] = '发送邮件失败'
    28         elif request.POST['from_addr'] =='' or request.POST['password'] == '' or to_addrs == '' or smtp_addr =='' or subject == '':
    29             mess['status'] = '请填写发件人、收件人、密码、邮箱服务器地址、主题'
    30         
    31         return render(request, "sendMail.html", mess)
    SendMail发送带附件的邮件
     1  def SendMail(self,subject,msg,to_addrs,from_addr,smtp_addr,password,testFile):
     2         '''
     3         @subject:邮件主题
     4         @msg:邮件内容
     5         @to_addrs:收信人的邮箱地址
     6         @from_addr:发信人的邮箱地址
     7         @smtp_addr:smtp服务地址,可以在邮箱看,比如163邮箱为smtp.163.com
     8         @password:发信人的邮箱密码
     9         '''
    10         mail_msg = MIMEMultipart()      #创建一个带附件实例
    11 
    12         #构造附件test.docx
    13         att1 = MIMEText(testFile, 'base64', 'gb2312')
    14         att1["Content-Type"] = 'application/octet-stream'
    15         att1.add_header('Content-Disposition', 'attachment', filename=u'测试报告.html') 
    16         mail_msg.attach(att1)
    17         #构建MIMEText纯文本内容
    18         txt = MIMEText(msg,'plain', 'utf-8')
    19         mail_msg.attach(txt)
    20 
    21         mail_msg['Subject'] = subject
    22         mail_msg['From'] =from_addr
    23         mail_msg['To'] = ','.join(to_addrs)
    24         try:
    25             s = smtplib.SMTP()
    26             s.connect(smtp_addr)  #连接smtp服务器
    27             s.login(from_addr,password)  #登录邮箱
    28             s.sendmail(from_addr, to_addrs, mail_msg.as_string()) #发送邮件
    29             s.quit()
    30             print ('success')
    31             return 1
    32         except Exception as e:
    33             print (str(e))
    34             return 0

    python 3抛出异常用 except Exception as e 而不是except Exception, e

    @成为那个自己
  • 相关阅读:
    PS常用美化处理方法大全
    FastReport.Net使用:[32]对话框使用2
    FastReport.Net使用:[31]使用带参查询及存储
    FastReport.Net使用:[30]对话框使用
    FastReport.Net使用:[29]调用存储过程1
    FastReport.Net使用:[28]数据合并
    FastReport.Net使用:[27]样式使用
    FastReport.Net使用:[26]数字格式
    FastReport.Net使用:[25]除数0处理方法
    FastReport.Net使用:[24]其他控件(邮政编码(Zip Code),网格文本(Cellular Text)以及线性刻度尺(Linear Gauge))
  • 原文地址:https://www.cnblogs.com/xiaochou1024/p/9583186.html
Copyright © 2011-2022 走看看