发送邮件

发送邮件

   张吉吉     2021年1月20日 13:33     906    

 from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
import smtplib
from email.header import Header
from email import encoders
import functools

#发送邮件,有html格式
class my_send_email(object):

   
#如果发送htmlemail_code参数置为html
   
def __init__(self, email_from, email_to, email_theme, email_text, email_passwd, email_stmp, *,
                
email_charset='utf-8', email_code='plain'):
       
self.msg = MIMEText(email_text, email_code, email_charset)
       
self.msg['From'] = email_from
       
self.msg['To'] = email_to
       
self.msg['Subject'] = Header(email_theme, email_charset)

       
self.from_addr = email_from
       
self.password = email_passwd
       
self.to_addr = email_to
       
self.smtp_server = email_stmp

   
def send_email_deo(fun):
       
@functools.wraps(fun)
       
def wrapper(self):
            fun(self)
            server = smtplib.SMTP(self.smtp_server
, 25)
           
# server.set_debuglevel(1)
           
server.login(self.from_addr, self.password)
            server.sendmail(self.from_addr
, [self.to_addr], self.msg.as_string())
            server.quit()
       
return wrapper

   
@send_email_deo
   
def send_mail(self):
       
pass


#发送带有附件的邮件
class my_send_email_accessory(my_send_email):
   
def __init__(self,email_from, email_to, email_theme, email_text, email_passwd, email_stmp
                
,image_path, *,email_charset='utf-8' , email_code='plain'):
       
super(my_send_email_accessory , self).__init__(email_from, email_to, email_theme, email_text,
                                                       
email_passwd, email_stmp)
       
self.msg = MIMEMultipart()
       
self.msg['From'] = email_from
       
self.msg['To'] = email_to
       
self.msg['Subject'] = Header(email_theme, email_charset)
       
self.msg.attach(MIMEText(email_text, email_code, email_charset))
       
self.image_path = image_path

   
@my_send_email.send_email_deo
   
def send_email_accessory(self):
       
with open(self.image_path, 'rb') as f:
            mime = MIMEBase(
'image', 'png', filename='test.jpg')
            mime.add_header(
'Content-Disposition', 'attachment', filename='test.jpg')
            mime.add_header(
'Content-ID', '<0>')
            mime.add_header(
'X-Attachment-Id', '0')
            mime.set_payload(f.read())
            encoders.encode_base64(mime)
           
self.msg.attach(mime)

if __name__ == '__main__':
   
#发送邮箱
   
email_from =
   
#接收邮箱
   
email_to =
   
#邮件主题
   
email_theme =
   
#邮件内容
   
email_text ='<html><body><h1>YWGH</h1>' +
   
'<p>send by <a href="https://www.yunweigonghui.com/">运维公会</a>...</p>' +
   
'</body></html>'
   
#邮箱的授权密码
   
email_passwd =
   
#smtp服务器
   
email_stmp = "smtp.163.com"
   
#附件路径,如果不发送附件就不用写。
   
image_path =

    my_email_w = my_send_email_accessory(email_from
, email_to ,email_theme email_text,
                                        
email_passwd,email_stmp,image_path  , email_code='html')
    my_email_w.send_email_accessory()


 


文章评论

0

其他文章