python封裝傳送郵件類
阿新 • • 發佈:2021-07-26
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import os class SendEMail(object): """封裝傳送郵件類""" def __init__(self, host: str, port: int, user: str, pwd: str): self.host = host self.port = port self.user = user self.pwd = pwd def __send(self, msg): try: smtpObj = smtplib.SMTP() smtpObj.connect(self.host, self.port) smtpObj.login(self.user, self.pwd) smtpObj.sendmail(self.user, msg["To"], msg.as_string()) print("郵件傳送成功") except Exception as e: print("郵件傳送失敗") def send_text(self, to_user: str, content: str, subject: str): """ 傳送文字郵件 :param to_user: 對方郵箱 :param content: 郵件正文,文字格式 :param subject: 郵件主題 :return: """ # 使用email構造郵件 msg = MIMEText(content, _subtype='plain', _charset="utf8") msg["From"] = self.user msg["To"] = to_user msg["subject"] = subject self.__send(msg) def send_html(self, to_user: str, content: str, subject: str): """ 傳送html格式郵件 :param to_user: 對方郵箱 :param content: 郵件正文,html格式 :param subject: 郵件主題 :return: """ # 使用email構造郵件 msg = MIMEText(content, _subtype='html', _charset="utf8") msg["From"] = self.user msg["To"] = to_user msg["subject"] = subject self.__send(msg) def send_attachment(self, to_user: str, content: str, subject: str, files: list): """ 傳送附件郵件 :param to_user: 對方郵箱 :param content: 郵件正文,文字格式 :param subject: 郵件主題 :return: """ # 建立一個帶附件的例項 msg = MIMEMultipart() msg['From'] = self.user msg['To'] = to_user msg['subject'] = subject # 郵件正文內容 msg.attach(MIMEText(content, 'plain', 'utf-8')) # 構造附件 for file in files: att = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8') att["Content-Type"] = 'application/octet-stream' # 這裡的filename可以任意寫,寫什麼名字,郵件中顯示什麼名字 _, file_name = os.path.split(file) att["Content-Disposition"] = 'attachment; filename="{}"'.format(file_name) msg.attach(att) self.__send(msg)