东篱野鹤

导航

python发送邮件

class Send_email(object):
    def get_newreport(self,report_path):
        dirs = os.listdir(report_path)#获取路径下所有文件
        dirs.sort()#获取到的文件列表排序,reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)
        newreportname = dirs[-1]
        # print('The new report name: {0}'.format(newreportname))
        return newreportname  # 返回的是测试报告的名字

  def take_messages(self,report_path):#写邮件
        new_report = self.get_newreport(report_path)
        self.msg = MIMEMultipart()
        self.msg['Subject'] = 'BBA JIT自动化测试报告'  # 邮件的标题
        self.msg['date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z')

        with open(os.path.join(report_path, new_report), 'rb') as f:
            mailbody = f.read()  # 读取测试报告的内容
        html = MIMEText(mailbody, _subtype='html', _charset='utf-8')  # 将测试报告的内容放在 邮件的正文当中
        self.msg.attach(html)  # 将html附加在msg里

        # html附件    下面是将测试报告放在附件中发送
        att1 = MIMEText(mailbody, 'base64', 'utf-8')
        att1["Content-Type"] = 'application/octet-stream'

        att1["Content-Disposition"] = 'attachment; filename="TestReport.html"'  # 这里的filename可以任意写,写什么名字,附件的名字就是什么
        self.msg.attach(att1)

    def send_email(self):
        # recipients = ['xxxx@xxxx.com', 'xxxx@qq.com', 'xxx@xxxxx.com']  # 发送给多个人
        recipients = ['recive@recive.com'] #发送给一个人
        self.take_messages()
        self.msg['from'] = 'from@from.com'  # 发送邮件的人,这种是公司邮箱转发
        #self.msg['to'] = recipients  # 收件人和发送人必须这里定义一下,执行才不会报错。
        toaddrs = recipients

        smtp = smtplib.SMTP()
        smtp.connect('smtp.from.com')
        smtp.ehlo()
        smtp.login('from@from.com', 'email_pwd')
        smtp.sendmail(self.msg['from'], toaddrs, self.msg.as_string())  # 发送邮件
        smtp.close()
        print('sendmail success')

 

posted on 2020-01-14 21:46  东篱野鹤  阅读(119)  评论(0)    收藏  举报