Odoo发送邮件不起作用

时间:2016-06-09 12:09:24

标签: python email openerp

这是我的Python代码。点击按钮时会出错。帮我解决这个问题。

    def send_quot_mail(self, cr, uid, ids,vals, context=None):
        cur_obj=self.browse(cr, uid, ids, context=context)
        stage = self.pool.get('crm.case.stage').browse(cr, uid, cur_obj.stage_id.id,context=context)
        no_of_days=stage.days_to_move
        end_date =datetime.datetime.now()+ relativedelta(days=no_of_days)
        print end_date
        mail_date=end_date.strftime('%d/%m/%Y')
        vals.update({'qout_mail_date':mail_date})

        mail_ids=[]
        mail_pool = self.pool.get('mail.mail')
        template_pool = self.pool.get('email.template')

        template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid,'custom_crm', 'email_template_crm_lead')[1]
        mail_id = template_pool.send_mail(cr, uid, template_id, cur_obj.partner_id.id, context=context)
        template_obj=self.pool.get('email.template').browse(cr, uid, template_id, context=context)
        message_to_sent=template_obj.body_html
        cur_obj=self.pool.get('res.users').browse(cr, uid, cur_obj.partner_id.id, context=context)

        mail_pool.write(cr, uid, mail_id, {'email_to':cur_obj.partner_id.email,'body_html':message_to_sent}, context=context)
        mail_ids.append(mail_id)
        if mail_ids:
            mail_pool.send(cr, uid, mail_ids, context=context)

        return super(crm_lead, self).write(cr, uid, ids,vals, context=None)

这是我的邮件模板XML代码

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
     <record id="email_template_crm_lead" model="email.template">
            <field name="name">CRM Lead Opportunity Stage</field>
            <field name="email_from">noreply@localhost</field>
            <field name="subject">CRM Lead Opportunity Stage</field>
            <field name="email_to"></field>
            <field name="partner_to"></field>
            <field name="model_id" ref="custom_crm.model_crm_lead"/>
            <field name="body_html">
                <![CDATA[
                    <div style="font-family: Verdana, Geneva, sans-serif; font-size: 13px; color: rgb(34, 34, 34); background-color: #FFF; ">
                        <p></p>
                    </div>
                ]]>
            </field>
        </record>
    </data>
</openerp>

当我点击按钮时出现错误

  

MissingError您尝试访问的文档之一   已删除,请在刷新后再试一次。

2 个答案:

答案 0 :(得分:0)

您试图通过引用来获取错误的模板:

template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid,'custom_crm', 'model_crm_lead')[1]

您的记录由id(外部ID,xml id,...)email_template_crm_lead定义。所以你必须得到这个id的模板:

template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid,'custom_crm', 'email_template_crm_lead')[1]

编辑:

cur_obj=self.pool.get('res.users').browse(cr, uid, cur_obj.partner_id.id, context=context)

似乎是错误的,因为您正在尝试查找具有合作伙伴ID(res.partner)的用户(res.users)。这可能会产生一个匹配(例如,管理员的ID为3),但也可能在您报告的MissingError中结束。

实际上,您经常使用cur_obj.partner_id.idcur_obj来自哪里

答案 1 :(得分:0)

通过从代码中删除以下行,我做对了。我现在可以发邮件了。

  

cur_obj = self.pool.get('res.users')。browse(cr,uid,   cur_obj.partner_id.id,context = context)

现在我没有收到错误

  

MissingError您尝试访问的文档之一   已删除,请在刷新后再试一次。