Ir al contenido
Menú
Se marcó esta pregunta
2 Respuestas
991 Vistas

I want an email to automatically appear in the chatter of a module after it was sent. I create the email by overriding 

def _send_mail(self, answer):

res = super()._send_mail(answer)

email_values = {

"auto_delete": False,

"model": "survey.survey",

"res_id": self.survey_id.id,

}


res.update(email_values)

return res

How can I achieve the desired result? After the email was sent, it doesn't appear in the chatter of the survey. Thanks in advance!

Avatar
Descartar
Mejor respuesta

Hi,

Please refer to the code:

def _send_mail(self, answer):

        # Call the original send_mail method

        res = super()._send_mail(answer)


        # Create a mail.message to appear in the chatter

        self.message_post(

            body="Email sent to the participant",

            subject="Survey email sent",

            message_type='email',  # can be 'comment' or 'email'

            subtype_id=self.env.ref('mail.mt_note').id,

            email_from=self.env.user.email,  # optional

        )


        return res

message_post automatically links the message to the record (self) in the chatter.


Hope it helps.

Avatar
Descartar
Mejor respuesta

Hii,

You're overriding _send_mail() and returning res, which may be an email template or dict of values, but you're not actually calling message_post, nor guaranteeing the email is sent with the right linkage to log in the chatter.

Here’s how to ensure the email appears in the chatter of the related survey.survey record:

from odoo import models class YourModel(models.Model): _inherit = 'your.model' def _send_mail(self, answer): res = super()._send_mail(answer) survey = self.survey_id # Prepare email values email_values = { 'auto_delete': False, 'model': 'survey.survey', 'res_id': survey.id, } # If res is a mail.template: if isinstance(res, dict): res.update(email_values) elif hasattr(res, 'write'): res.write(email_values) # Optional: Post a message to chatter manually (if not posted automatically) survey.message_post( body="An email was sent to the user.", message_type="notification", subtype_xmlid="mail.mt_note", ) return res

i hope it is use full

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
2
ago 24
1939
3
oct 18
7894
0
dic 16
4273
2
feb 25
3626
2
feb 25
1989