Enviar E-mail desde un wizard basado en plantilla en Odoo 15
Es un ejemplo sencillo de como:
- Poner un botón en el formulario de contactos.
- Al hacer click enviar un email ya estandarizado usando mail.template.
Antes de empezar asegúrate de que:
- Tienes configurado el correo de salida y te funciona.
- Mira cada cuanto tiempo se enviarn los mails en Odoo (normalmente es una hora... pero para pruebas bájalo a 1 minuto en Técnico/Acciones planificadas.
Una vez instalado, te vas a un contactos y entras en unos de ellos y verás un magnifico botón nuevo para enviar tu email.
El módulo tienes que llamarlo send_email_wizard.
Nos creamos una vista con el código del botón. El fichero lo podemos llamar views.xml y lo depositamos en carpeta views :
Nos creamos la plantilla del correo que vamos a enviar:
Nos creamos el modelo que realiza la acción:
# -*- encoding: utf-8 -*-
from odoo import models, fields, api
class res_partner(models.Model):
_inherit = 'res.partner'
def action_send_email(self):
'''
Esta función abre una ventana para escribir un email, con la plantilla por defecto.
'''
self.ensure_one()
ir_model_data = self.env['ir.model.data']
try:
template_id = \
ir_model_data.check_object_reference('send_email_wizard', 'example_email_template')[1]
except ValueError:
template_id = False
try:
compose_form_id = ir_model_data.check_object_reference('mail', 'email_compose_message_wizard_form')[1]
except ValueError:
compose_form_id = False
ctx = {
'default_model': 'res.partner',
'default_res_id': self.ids[0],
'default_use_template': bool(template_id),
'default_template_id': template_id,
'default_composition_mode': 'comment',
}
return {
'name': ('Compose Email'),
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(compose_form_id, 'form')],
'view_id': compose_form_id,
'target': 'new',
'context': ctx,
}