如何通过服务器操作Odoo 14向多个申请人发送电子邮件



我有一个电子邮件模板,我想使用服务器操作向多个申请人发送拒绝工作的电子邮件,并在Odoo 14中发送电子邮件后存档申请人。我如何将此服务器操作链接到电子邮件模板并在发送电子邮件后存档申请人?任何帮助都会非常感激。这是我的代码。

**Email Template:**
<record id="email_template_custom" model="mail.template">
<field name="name">Job refusal: Send by email</field>
<field name="model_id" ref="hr_recruitment_custom.model_hr_applicant"/>
<field name="email_from">${object.user_id.email_formatted |safe}</field>
<field name="email_to">${object.email_from}</field>
<field name="subject">Applied Job: (Ref ${object.job_id.name})</field>
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
<p style="margin: 0px; padding: 0px; font-size: 13px;">
Dear ${object.partner_name}
<br/>
<br/>
We appreciate your interest in ${object.company_id.name} and the time you’ve invested in applying for the ${object.job_id.name} opening.

<br/>
<br/>
We ended up moving forward with another candidate, but we’d like to thank you for talking to our team and giving us the opportunity to learn about your skills and accomplishments.
<br/>
<br/>
We will be advertising more positions in the coming months.
We hope you’ll keep us in mind and we encourage you to apply again.
<br/>
<br/>
We wish you good luck with your job search and professional future endeavors.

<br/>
<br/>
Best,
${object.user_id.name}
</p>
</div>enter code here
</field>
</record>
**python file:**   
def action_send_refusal_by_email(self):
ctx = {}
email_list = self.partner_id.mapped('email')
if email_list:
ctx['email_to'] = ','.join([email for email in email_list if email])
ctx['email_from'] = self.env.user.emoployee_id.email
ctx['send_email'] = True
ctx['partner_id'] = ''
template = self.env.ref('hr_recruitment_custom.email_template_custom')
template.with_context(ctx).send_mail(self.id, force_send=True, raise_exception=False)
**Server action:**    
<record id="action_refuse_applicants" model="ir.actions.server">
<field name="name">Milti refuse Applicants</field>
<field name="model_id" ref="hr_recruitment_custom.email_template_custom"/>
<field name="binding_model_id" ref="hr_recruitment_custom.email_template_custom"/>
<field name="state">code</field>
<field name="code">records.action_send_refusal_by_email()</field></record>

修改您的服务器操作并添加replace record_model,使用记录所属的实际模型

**Server action:**    
<record id="action_refuse_applicants" model="ir.actions.server">
<field name="name">Multi refuse Applicants</field>
<field name="model_id" ref="hr_recruitment_custom.record_model"/>
<field name="binding_model_id" ref="hr_recruitment_custom.record_model"/>
<field name="state">code</field>
<field name="code">records.action_send_refusal_by_email()</field></record>

在python端,首先要循环遍历self,以避免单例错误。

def action_send_refusal_by_email(self):
for rec in self:
ctx = {}
#email_list = self.partner_id.mapped('email')
# if email_list:
ctx['email_to'] = rec.partner_id.email
ctx['email_from'] = self.env.user.employee_id.email
ctx['send_email'] = True
ctx['partner_id'] = rec.partner_id.id
template = self.env.ref('hr_recruitment_custom.email_template_custom')
template.with_context(ctx).send_mail(
rec.id, force_send=True, raise_exception=False)
rec.active = False

相关内容

  • 没有找到相关文章

最新更新