python django 测试报告 发送邮件

本文介绍了一个使用Python Django框架实现的邮件发送功能,支持自定义上传测试报告,并通过表单收集发件人、收件人等信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值