程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了加密 Odoo 附件并通过电子邮件发送大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决加密 Odoo 附件并通过电子邮件发送?

开发过程中遇到加密 Odoo 附件并通过电子邮件发送的问题如何解决?下面主要结合日常开发的经验,给出你关于加密 Odoo 附件并通过电子邮件发送的解决方法建议,希望对你解决加密 Odoo 附件并通过电子邮件发送有所启发或帮助;

有一个问题,在发送工资单时,系统应该检索生成的工资单,对其进行加密,然后通过电子邮件将其作为加密附件发送。

问题是,当我保存 pdf 时,它会输出一个空白文件或一个不可读的文件,并抛出错误 file type unkNown (application/octet-stream) is not supported

我已经确认变量 `pdf[0] 实际上是字节格式的 pdf。

所以我的问题是如何将这些 pdf 数据保存到人类可读的 pdf 文件中。

这是我的python代码。 此方法将调用附有 pdf 的 odoo 发送电子邮件弹出窗口。

save_pdf_file() 函数只是获取路径并将加密的附件保存回 odoo,以便它可以作为 pdf 附加。

如果您需要额外说明,请告诉我。谢谢你们的时间。

    def send_by_email(self):
        for rec in self:
            filename = f"{(rec.name or '').@R_197_9363@ce('/','_')}_${rec.statE}"
            pdf = self.env.ref(
                'hr_payroll_community.action_report_payslip').render_qweb_pdf(rec.ID)
            _logger.info(base64.b64decode(pdf[0]))
            if pdf:
                #here i am tesTing to see if I can save the pdf but it's not working.

                pdf1 = pdf[0]
                pdf_path = rec.create_pdf()
                with open('/home/b14/Desktop/dd.pdf','wb') as f:
                    f.write(base64.decodebytes(pdf1))

                # add_encryption(pdf_path,pdf_path,'12345678')
                pdf_ID = rec.save_pdf_file(pdf_path,fileName)

                template_ID = self.env.ref(
                    'send_payslips_by_email.email_template_send_payslip').ID
                compose_form_ID = self.env.ref(
                    'mail.email_compose_message_wizard_form').ID
                ctx = Dict(
                    default_model='hr.payslip',default_res_ID=self.ID,# IDK IF THIS FIELD BELOW ACTUALLY EXISTS
                    default_use_template=bool(template_ID),default_template_ID=template_ID,# default_attachment_IDs=[(0,pdf_ID)],default_composition_mode='comment',)

                return {
                    'name': _('Compose Email'),'type': 'ir.actions.act_window','vIEw_type': 'form','vIEw_mode': 'form','res_model': 'mail.compose.message','vIEws': [(compose_form_ID,'form')],'vIEw_ID': compose_form_ID,'target': 'new','context': ctx,}

在此之后,有加密pdf的功能,我已经确认它可以很好地与我机器上已经保存的其他pdf一起使用。

def add_encryption(input,output,password):
    pdf_writer = pdffileWriter()
    pdf_reader = pdffileReader(input)

    for page in range(pdf_reader.getNumPages()):
        pdf_writer.addPage(pdf_reader.getPage(pagE))

    pdf_writer.encrypt(user_pwd=password,owner_pwd=None,use_128bit=TruE)

    with open('/home/b14/Desktop/pp.pdf','wb') as f:
        pdf_writer.write(f)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的加密 Odoo 附件并通过电子邮件发送全部内容,希望文章能够帮你解决加密 Odoo 附件并通过电子邮件发送所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:加密