借鉴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: 收件人列表['xxx@163.com','xxx@qq.com']
: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)
我知道肯定有很多大神设计的简洁方便,或者说人家都给你封装好了你自己还费什么劲啊,解释下:纯属个人喜好,我觉得自己用着方便即可,不喜勿喷。