วันศุกร์ที่ 23 ตุลาคม พ.ศ. 2552

Python send mail email e-mail

วันนี้ได้ไปเล่นกับ blog ของ นายบอส มามีในส่วนการส่งเมล์ เผอิญที่เป็นเป็น รูปแบบธรรมดา
ยาว ๆ เลยขอมาจับแยกให้ดูดีขึ้น แต่ยังไม่ได้ test เลย คือเอามาแปลงอย่างเดียว
เดี๋ยวถ้าว่าง ๆ จะมาประกอบและ test ใหม่

ตอนนี้ง่วงมาก ๆ เลย Z z z z . . .

อ้างอิงจาก : http://bluegear.wordpress.com/2009/10/20/email-attach-file-with-python/#comment-32

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import xml.etree.ElementTree as ET

class EMail(Object):
    def init(self, url_mail_server):
        self.url_mail_server = 'mailserver.company.com'
        self.smtp = smtplib.SMTP(self.url_mail_server)
        
    def gen_template(self, **kw):
        root = ET.Element("html")
        head = ET.SubElement(root, "head")
        body = ET.SubElement(root, "body")
        p = ET.SubElement(body, "p")
        a = ET.Element('a', href='http://www.companyhomepage.com')
        img = ET.Element('img', src='cid:image1')
        a.append(img)
        p.append(a)
        return ET.tostring(root, 'UTF-8')
        
    def msg(self, **kw):
        msg = MIMEMultipart('alternative')
        msg['Subject'] = kw.get('subject')
        msg['From'] = kw.get('sender')
        msg['To'] = ''.join(['%s, '%b for b in kw.get('receiver')]).rstrip(', ')
        msg.attach(MIMEText(gen_template(**kw), 'html'))
        
        fp = open(kw.get('image'), 'rb')
        img = MIMEImage(fp.read())
        fp.close()
        img.add_header('Content-ID', '')
        msg.attach(img)
        return msg
        
    def send(self, **kw):
        self.smtp.sendmail(kw.get('sender'), kw.get('receiver'), msg(**kw))
        
    def finish(self):
        self.smtp.quit()
        

if '_main_' == _name_:
    d = {}
    d['sender'] = 'sender@company.com'
    d['receiver'] = ['vip1@something.com', 'vip2@something.com']
    d['subject'] = 'Test Embed Image With Url'
    d['image'] = 'image1.gif'
    
    email = EMail('mailserver.company.com')
    email.send(**d)
    
    d['image'] = 'image2.gif'
    email.send(**d)
    
    d['image'] = 'image3.gif'
    email.send(**d)
    email.finish()

ไม่มีความคิดเห็น: