【问题标题】:how can i create email template using Xml Odoo如何使用 Xml Odoo 创建电子邮件模板
【发布时间】:2016-12-07 16:14:50
【问题描述】:

如何使用 Xml Odoo 创建电子邮件模板

<?xml version="1.0" encoding="UTF-8"?>

<openerp>

<data>
    <record id="entretien_send_email" model="email.template">
        <field name="name">Entretien Send by email</field>
        <field name="model_id" ref="model_appelsoffres_entretien"/>
        <field name="email_from">${(object.user_id.email or '')|safe}</field>
        <field name="subject">entretien</field>
        <field name="email_to">${(object.candidat.email or '')|safe}</field>
        <field name="auto_delete" eval="True" />
        <field name="subject">Your request has been submit</field>
        <field name="message"><![CDATA[
 THIS IS AN AUTOMATED EMAIL. DO NOT REPLY.

Hello,

We are here to inform you that the request [[object.candidat.nom]] est de    faire un entretien  [[object.titre_evenement]] with the following data:

    | Request - Details
    |=========================
    | Titre Evenement: [[object.titre_evenement]]
    |=========================
    | Nom Person: [[object.candidat.nom]]
    | Date Entretien: [[object.date_entretien]]
    | Heure Debut: [[object.heure_debut]]
    |=========================
    | Heure Fin: [[object.heure_fin]]


 Has not been confirmed and is closed.

 If you have any question, do not hesitate to contact your supervisor.

 Thank you!]]>
        </field>            
       </record>
      </data>
 </openerp>

在python中我有

 class entretien(models.Model):

_name='appelsoffres.entretien'

titre_evenement = fields.Char(required=True)

candidat =fields.Many2one('appelsoffres.candidature',string="Candidat",required=True)

email = fields.Char(required=True)

telephone = fields.Char(required=True)

portable = fields.Char(required=True)

    state = fields.Selection([

    ('draft', "Brouillon"),

    ('confirmed', "Rendez Vous Planifié"),

    ('done', "Terminé"),

    ('sent', "Envoyé"),

], default='draft')

@api.multi
def action_draftentretien(self):
    self.state = 'draft'

@api.multi
def action_confirmentretien(self):
    self.state = 'confirmed'

@api.multi
def action_doneentretien(self):
    self.state = 'done'

@api.multi
def send(self):
    self.state = 'sent'

    et_pool = self.pool.get('email.template')
    mail_sent = et_pool.send_mail(
    self.env.cr, 1, entretien_send_email, force_send=True,  context=self.env.context)
 entretien()

我收到以下错误:

File "C:\Program Files (x86)\Odoo 8.0-20160222\server\.\openerp\api.py", line 266, in wrapper

File "C:\Program Files (x86)\Odoo 8.0-

20160222\server\openerp\addons\Appelsdoffres\AppelsOffres.py", line 224, in send

ValueError: "global name 'entretien_send_email' is not defined" while evaluating u'send()'

【问题讨论】:

  • 我只是想知道:使用的标签是 openerp-7,但您显然使用的是 odoo v8 引入的新 API。最后,您将它们混合在一起。你用的是什么版本?
  • 哦,是的,谢谢提示
  • 不要让他们保持现状。最后我也想知道新旧 API 的混合。
  • 警告!模板呈现后发件人电子邮件丢失或为空。指定一个来传递您的消息
  • @CZoellner 我尝试了各种方式,但无济于事。我使用我的电子邮件作为发件人,我使用 [Entretien 通过电子邮件发送 ]]>entretien${(object. candidat.email 或 '')|safe}

标签: python xml openerp odoo-8


【解决方案1】:

首先确保 xml 文件由清单文件 (__openerp__.py) 加载。

你的python代码应该是这样的:

@api.multi
def send(self):
    self.state = 'sent'
    # module_name should be replaced by the actual module name in which you have defined that custom template.
    entretien_send_email = self.env.ref('module_name.entretien_send_email')
    if entretien_send_email:
        entretien_send_email.send_mail(self.id)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    相关资源
    最近更新 更多