工具(二)--Python发送普通文本或HTML邮件

借鉴SMTP封装了一个发送普通邮件(不包含附件)的类。
使用此类须知
1、确认收件人邮箱开启了smtp服务。
2、发送内容按照以下格式保存至文件:
第一行:‘From’
第二行:‘To’
第三行:‘主题’
第四行起:正文内容。
更多详细的要求详见代码,或直接复制编码,按提示操作。

from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
import smtplib

class ToolsSendEmail():
    """
    借用SMTP发送邮件
    """
    def __init__(self,smtp,sender,pwd):
        self.smtp = smtp
        self.sender = sender
        self.pwd = pwd

    # 登录邮箱
    def __loginin(self):
        smtper = SMTP(self.smtp)
        smtper.login(self.sender,self.pwd)
        return smtper

    # 处理邮件内容
    def __text(self,file_name,email_type):
        with open(file_name,'r') as f:
            From = f.readline()
            To = f.readline()
            Subject = f.readline()
            main_list = f.readlines()
        email_type = email_type
        main = ''.join(main_list)
        message = MIMEText(main, email_type, 'utf-8')
        message['From'] = Header(From, 'utf-8')
        message['To'] = Header(To, 'utf-8')
        message['Subject'] = Header(Subject, 'utf-8')
        return message
    
    # 发送邮件
    def send_email(self,file_name,email_type,To_list):
        """
        :param file_name: 邮件内容文件,请处理成以下格式
                第一行:from,
                第二行:to,
                第三行:主题
                第四行:正文
        :param email_type: "plain" or "html" 
        :param To_list: 收件人列表['[email protected]','[email protected]']
        :return: 
        """
        receivers = To_list
        message = self.__text(file_name,email_type)
        smtper = self.__loginin()
        try:
            smtper.sendmail(self.sender, receivers, message.as_string())
            print('邮件发送完成!')
        except smtplib.SMTPException:
            print("Error: Email Sended Failed!")


if __name__ == "__main__":
    Email = ToolsSendEmail('smtp.163.com','username','password')
    Email.send(file_name,email_type,To_list)

我知道肯定有很多大神设计的简洁方便,或者说人家都给你封装好了你自己还费什么劲啊,解释下:纯属个人喜好,我觉得自己用着方便即可,不喜勿喷。

你可能感兴趣的:(工具)