Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
4 Trả lời
31145 Lượt xem

Hello every body,

please I make module and I want to write code in this module to send message from  mail to another email but I do not know how do this ,

so I will than full if any one help me to do that ,

thanks for all .

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

 import smtplib
        
        sender = 'username'
        receivers = 'username'
        
        message = """hai da
        """
        
        
        smtpObj = smtplib.SMTP(host='smtp.gmail.com', port=587)
        smtpObj.ehlo()
        smtpObj.starttls()
        smtpObj.ehlo()
        smtpObj.login(user="username", password="password")
        smtpObj.sendmail(sender, receivers, message)         
        print "Successfully sent email

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

this function is sending email using template 

1st create a template in odoo refer it email template

then use this function 

def send_email(self,cr,uid,ids,context=None):
         email_template_obj = self.pool.get('email.template')
         template_ids = email_template_obj.search(cr, uid, [('model_id.model', '=','hr.employee')], context=context) 
         print template_ids
         if template_ids:
              values = email_template_obj.generate_email(cr, uid, template_ids[0], ids[0], context=context)
              """values['subject'] = subject 
              values['email_to'] = email_to
              values['body_html'] = body_html
              values['body'] = body_html"""
              values['res_id'] = False
              mail_mail_obj = self.pool.get('mail.mail')
              msg_id = mail_mail_obj.create(cr, uid, values, context=context)
              if msg_id:
                 mail_mail_obj.send(cr, uid, [msg_id], context=context) 
         return True

Ảnh đại diện
Huỷ bỏ

do I have to replace the docy_html with the actual body or the text OR would it automatically write the body based on the email template.

Câu trả lời hay nhất

sender=str(self.from_id)
        receiver=str(self.email_id)

    
        message=str(self.leave_reason)
        try:
            smtpObj =  smtplib.SMTP(host='smtp.gmail.com', port=587)
            smtpObj.ehlo()
            smtpObj.starttls()
            smtpObj.ehlo()
            username=str(self.from_id)
            pwd=str(self.mail_password)
            smtpObj.login(user=username, password=pwd)
            smtpObj.sendmail(sender,receiver,message)
            smtpObj.quit()
            self.state='waiting'
            print "success"
        except SMTPException:
            print "error"

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

you can also use email function inside any function (button function or any function) :
this is an example for button function i used in crm module :

    def set_approve(self, cr, uid, ids,context=None):
        res_id = self.read(cr, uid, ids, ['boq_item_ids'], context)[0]['id']
        email_obj = self.pool.get('email.template')
        user_obj = self.pool.get('res.users').browse(cr, uid, uid)
        template_ids = email_obj.search(cr, uid, [('name', '=', 'Opportunity approved')])
        email = email_obj.browse(cr, uid, template_ids[0])
        email_obj.write(cr, uid, template_ids, {'email_from': email.email_from,
                                                'email_to': email.email_to,
                                                'subject': email.subject,  
                                                'body_html': email.body_html,
                                                'email_recipients': email.email_recipients})
        email_obj.send_mail(cr, uid, template_ids[0], res_id, True, context=context)
        stage_id = self.get_stageid(cr, uid, [('state', '=', 'approved')], context=context)
    a = fields.datetime.now()
        b = self.pool.get('crm.lead').read(cr, uid, ids, context=context)
    c = b[0]['date_stage_waiting']
    timedelta = 0
    if c != 0:
            DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
            a = datetime.datetime.strptime(a, DATETIME_FORMAT)
            c = datetime.datetime.strptime(c, DATETIME_FORMAT)
            timedelta = a - c
        if stage_id:
            self.write(cr, uid, ids, {'stage_id': stage_id, 'date_stage_approved': a, 'diff_waiting': timedelta}, context=context)
        return True

 


NB : 1) donot forget to create email template with name as in your function

        2) configure your outgoing mail server

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 9 15
3836
1
thg 6 15
806
0
thg 4 15
636
2
thg 4 15
798
0
thg 4 15
609