mail.py 1.78 KB
import os
import smtplib
from email import encoders
from email.header import Header
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

MAIL_SERVER_HOST = 'smtp.exmail.qq.com'
MAIL_SERVER_PORT = 25

TIME_OUT = 50


class MailSender:

    def __init__(self, sender, pwd):
        self.sender = sender
        self.pwd = pwd
        self.server = smtplib.SMTP(timeout=TIME_OUT)
        self.server.debuglevel = 0
        self.server.connect(host=MAIL_SERVER_HOST,
                            port=MAIL_SERVER_PORT,)
        self.server.login(self.sender, self.pwd)

    def close(self):
        self.server.close()

    def send(self, to_addrs, subject, content, file_list=[]):
        msg = MIMEMultipart()

        for att_file in file_list:
            att = MIMEBase('application', 'octet-stream')
            att.set_payload(open(att_file, 'rb').read())
            encoders.encode_base64(att)
            att.add_header('Content-Disposition',
                           'attachment',
                           filename=Header(os.path.basename(att_file), 'utf-8').encode())
            msg.attach(att)

        msg['Subject'] = Header(subject, 'utf-8')
        msg['From'] = self.sender
        msg['To'] = ','.join(to_addrs)

        content = u'Hi:<br><br>' + \
                  content + \
                  u'<br><br>祝好!<br><br><br>本邮件为系统自动发送,请勿直接回复!<hr>'

        msg.attach(MIMEText(content.encode('utf-8'), 'html', 'utf-8'))
        self.server.sendmail(self.sender, to_addrs, msg.as_string())
        # smtplib.SMTPServerDisconnected


# if __name__ == '__main__':
#     mail_sender = MailSender()
#     mail_sender.send(['1304057458@qq.com'], 'hello', 'world.', [])
#     mail_sender.close()