发送邮件
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
class SendEmail:
"""邮件发送类"""
def __init__(self, sub_title, sub_content):
"""
初始化
:param sub_title: 邮件主题
:param sub_content: 邮件正文
"""
self.host = "100.100.100.100"
self.sender = "sender@sender.com"
self.s_name = self.sender.split('@')[0]
self.password = "admin"
self.receivers = ["receiver1@receiver.com", "receiver2@receiver.com"]
self.r_name_list = []
self.subject_content = sub_title
self.body_content = sub_content
self.port = 25
self.message_text = MIMEText(self.body_content, "plain", "utf-8")
self.mm = MIMEMultipart('related')
self.stp = smtplib.SMTP(
self.set_info()
def receiver_handle(self):
"""
收件人处理
设置接受者, 注意严格遵守格式, 里面邮箱为接受者邮箱
self.mm["To"] = f"{self.r_name}<{self.receivers[0]}>"
"""
for receiver in self.receivers:
r_name = receiver.split('@')[0]
to_result = f'{r_name}<{receiver}>'
self.r_name_list.append(to_result)
for r_name in self.r_name_list:
self.mm['To'] = r_name
def set_info(self):
"""设置邮件信息"""
self.mm["From"] = f"{self.s_name}<{self.sender}>"
self.receiver_handle()
self.mm["Subject"] = Header(self.subject_content, 'utf-8')
self.mm.attach(self.message_text)
def add_file(self, f_path, f_name, charset='utf-8'):
"""
添加附件
:param f_path: 附件路径
:param f_name: 重命名附件
:param charset: 文件名编码格式
"""
self.atta = MIMEText(open(f_path, 'rb').read(), 'base64', 'utf-8')
self.atta.add_header("Content-Disposition", "attachment", filename=(charset, '', f_name))
self.mm.attach(self.atta)
def send_mail(self, is_ssl=False, debug=False):
"""
发送邮件
:param is_ssl: 是否使用SSL
:param debug: 是否打印交互信息
"""
if is_ssl:
self.stp = smtplib.SMTP_SSL(self.host)
self.port = 465
self.stp.connect(self.host, self.port)
if debug:
self.stp.set_debuglevel(1)
self.stp.login(self.sender, self.password)
self.stp.sendmail(self.sender, self.receivers, self.mm.as_string())
def quit(self):
self.stp.quit()