''''''
#coding;utf-8
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formataddr
#发送邮件数据
class SendEmail():
def __init__(self):
'''
:param url: 邮件服务器
:param port: 端口号
:param sender: 发送人
:param authorization_code:密码
:param receiver: 收件人
:param context: 邮件主题
:param title: 邮件内容
:param filepath: 附件路径
'''
#邮件服务器
self.url = 'smtp.163.com'
#端口
self.port = 465
# 设置发件人
self.sender = ''
# 邮箱授权码,不是登录的密码
self.authorization_code = ''
# 收件人地址
self.receiver = ['@163.com','****@163.com']
#邮件内容
self.context = 'this is content'
self.title = '标题测试'
#附加地址
self.file_path =None
def mail_content(self):
#编辑邮件内容数据
if self.file_path!=None:
msg = MIMEMultipart()
msg['From'] = formataddr(["ws", self.sender])
msg['To'] = ','.join(self.receiver) # 多人邮件发送数据
# 设置邮件标题
msg['Subject'] = Header(self.title, 'utf-8').encode()
'''发送附件开始'''
msg.attach(MIMEText(self.context, 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open(self.file_path, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="test.text"'
msg.attach(att1)
'''发送附件结束'''
else:
msg = MIMEText(self.context, 'plain', 'utf-8')
msg['From'] = formataddr(["ws", self.sender])
# msg['To'] = formataddr(["wsd",r])#单人邮件发送
msg['To'] = ','.join(self.receiver) # 多人邮件发送数据
# 设置邮件标题
msg['Subject'] = Header(self.title, 'utf-8').encode()
try:
# 使用ssl加密
smt = smtplib.SMTP_SSL(self.url, self.port)
smt.login(self.sender, self.authorization_code)
# smt.sendmail(sender, [receiver, ], msg.as_string())
log.warning('begin send email')
smt.sendmail(self.sender, msg['To'].split(','), msg.as_string())
# 关闭连接
smt.quit()
print('send success')
log.warning('send success')
except Exception as e:
log.warning('send fail')
print(e)
if __name__ == '__main__':
SendEmail().mail_content()