如何在Odoo 12中向多个用户(电子邮件地址)发送电子邮件模板

时间:2019-05-28 08:13:01

标签: python python-3.x jinja2 odoo odoo-12

当调度程序运行电子邮件中的自定义数据时,我想向Odoo 12中的多个用户发送电子邮件。我在XML文件中创建了电子邮件模板。另外,我有一种方法可以将我的所有电子邮件地址作为列表返回。如何在 “ email_to” 字段中的电子邮件模板中遍历此列表,并获取所有电子邮件地址并将该电子邮件发送至所有这些电子邮件?

以下是我的电子邮件模板:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data noupdate="1">
        <record id="repayment_due_date_reminder_email_template" model="mail.template">
            <field name="name">Repayment Due Date Reminder Email Template</field>
            <field name="email_from">admin@netlinks.af</field>
            <field name="subject">Repayment Due Date Reminder</field>
            <field name="email_to">${for email in object.get_groups_usesr_email():
                                        }</field>
            <field name="lang">${object.lang}</field>
            <field name="model_id" ref="hr_payroll_advance_salary.model_loan_request"/>
            <field name="body_html">
                <![CDATA[ 
                <p>The following loan installment is due for repayment:<br/>
                Loan Recepient: ${(object.employee_id.name)}<br/>
                Total Loan Amount: ${(object.loan_amount)} ${(object.currency)} <br/>
                Installment Due: ${(object.loan_amount)} ${(object.currency)} <br/>
                Repayment Date: ${(object.repayment_schedule_ids.repayment_date)} <br/>
                You can view the loan record here for further details </p>
                ]]> 
            </field>
        </record>
    </data>
</odoo>

我使用以下代码调用电子邮件模板:

template_rec = self.env.ref('hr_payroll_advance_salary.repayment_due_date_reminder_email_template')
template_rec.send_mail(loan.id, force_send=True)

这是返回电子邮件的方法:

@api.multi
    def get_groups_usesr_email(self):
        emails = []
        user_ids = self.get_users_from_groups('group_nl_finance_manager')
        emails = self.get_users_email('group_nl_finance_manager', user_ids)
        user_ids = self.get_users_from_groups('group_nl_ceo')
        new_emails = self.get_users_email('group_nl_ceo', user_ids)
        for email in new_emails:
            emails.append(email)
        return emails

我正在执行上述操作,以便向两个不同组的所有用户发送电子邮件,但我不确定这是否合适。可以做我想做的事情还是不做,还是可以用另一种方法来做?

2 个答案:

答案 0 :(得分:1)

您可以使用mass_mailing(电子邮件营销 由Odoo S.A)模块来完成。

答案 1 :(得分:0)

我使用带有以下代码的电子邮件循环,将电子邮件模板发送到所有电子邮件地址,在我的情况下效果很好。

all_eamils = loan.get_groups_usesr_email()
    for email in all_eamils:
        template_rec = self.env.ref('hr_payroll_advance_salary.repayment_due_date_reminder_email_template')
        template_rec.write({'email_to': email})
        template_rec.send_mail(loan.id, force_send=True)