Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
2 Odpowiedzi
1065 Widoki

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!

Awatar
Odrzuć
Najlepsza odpowiedź

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.

Awatar
Odrzuć
Najlepsza odpowiedź

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

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
2
sie 24
1979
3
paź 18
7919
0
gru 16
4301
2
lut 25
3694
2
lut 25
2049