【发布时间】:2017-09-19 08:05:07
【问题描述】:
我们有一个 wordpress 网站,允许用户通过提供他们的电子邮件地址来下载软件安装程序进行试用。
下载后,我们将收到来自我们的 wordpress 网站的电子邮件通知。因此,在接下来的几周内,我们将手动向下载我们软件的人发送电子邮件(包含教程和有用信息)。
我想自动发送这个预定的电子邮件。 我正在考虑使用odoo 10来做这件事。 这在odoo 10中可能吗? 如果是这样,我应该如何以及从哪里开始?
【问题讨论】:
我们有一个 wordpress 网站,允许用户通过提供他们的电子邮件地址来下载软件安装程序进行试用。
下载后,我们将收到来自我们的 wordpress 网站的电子邮件通知。因此,在接下来的几周内,我们将手动向下载我们软件的人发送电子邮件(包含教程和有用信息)。
我想自动发送这个预定的电子邮件。 我正在考虑使用odoo 10来做这件事。 这在odoo 10中可能吗? 如果是这样,我应该如何以及从哪里开始?
【问题讨论】:
是的,在 Odoo 中是可能的。您需要按照以下步骤操作。
【讨论】:
创建调度程序。这将创建一个调度程序视图。您可以在设置 -> 自动化 -> 预定操作下看到这一点
<record id="ir_send_mail_cron_scheduler_action" model="ir.cron">
<field name="name">Followup Mail scheduler</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="'crm.lead'" name="model"/>
<field eval="'send_followup_mail'" name="function"/>
</record>
在crm.lead 对象中,您需要创建一个可以调用模板的函数。在此之前,您有一个 one2many 字段,您可以在其中附加您的电子邮件模板,以便您可以从中获取电子邮件模板。
@api.multi
def send_followup_mail(self):
# write your logic to find the time intervals(day 1, day 2, week)
# based on the time interval trigger the mails.
# use a loop to get the mail template id from the one2many
mail_template = self.env['mail.template'].browse(template_id)
mail_template.write({'email_to': self.email})
#this will trigger the mail
if mail_template:
mail_template.send_mail(self.id, force_send=True, raise_exception=True)
【讨论】:
当您创建邮件模板时,它还有一个名为“scheduled_date”的字符字段,您可以在其中添加 python 代码,例如
${(datetime.datetime.now() + relativedelta(days=3)).strftime('%Y-%m-%d %H:%M')}
这意味着使用此模板创建的电子邮件将在 3 天后发送..
${} 用于 jinja 模板引擎
【讨论】: