Bot-CQBOT/python-apiproject/oemail/__init__.py
2024-07-06 09:47:19 +08:00

98 lines
4.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: UTF-8 -*-
# 开发人员:萌狼蓝天
# 博客Https://mllt.cc
# 笔记Https://cnblogs.com/mllt
# 哔哩哔哩/微信公众号:萌狼蓝天
# 开发时间2022/5/6
# CodingUTF-8
import hashlib
import flask, json
from flask import request
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
import random
server = flask.Flask(__name__) # 将该py文件转为一个服务
class EmailSentObject():
"""
发送邮件对象
"""
mail_host = "smtp.ym.163.com" # 网易企业邮箱SMTP服务器
mail_admin = '' # 企业邮箱账号
mail_pwd = '' # 企业邮箱密码
mail_sender = "" # 企业邮箱账号
admin_name = "萌狼工作室" # 发信人姓名 请查阅 https://www.cnblogs.com/mllt/p/18286902
admin_email = mail_sender # 发信人邮箱 与企业邮箱账号保持一致
# nc -w 2 smtp.ym.163.com 465 < /dev/null && echo "port is ok"
def __init__(self, receiver_email, receivers_name, subject, content):
"""
邮件发送对象参数
:param receiver_email: 接收者邮件类型为List
:param receivers_name: 接收者姓名类型为string
:param subject: 邮件主题类型为string
:param content: 邮件正文支持解析HTML标签类型为string
"""
self.receivers_eamil = receiver_email # 接收者邮件类型为List
self.receivers_name = receivers_name # 接收者姓名类型为string
self.subject = subject # 邮件主题类型为string
self.content = content # 邮件正文支持解析HTML标签类型为string
def sent(self):
"""
发送邮件
:return: 成功返回 True | 失败返回 False
"""
message = MIMEMultipart('related')
message['From'] = Header('{}<{}>'.format(self.admin_name, self.admin_email), 'utf-8') # 发信人
message['To'] = Header(self.receivers_name, 'utf-8') # 收信人
message['Subject'] = Header(self.subject, 'utf-8') # 邮件主题
msgAlternative = MIMEMultipart('alternative')
message.attach(msgAlternative)
msgAlternative.attach(MIMEText(self.content, 'html', 'utf-8'))
try:
smtpObj = smtplib.SMTP_SSL(self.mail_host) # 连接发信服务器
smtpObj.connect(self.mail_host, 465)
smtpObj.login(self.mail_admin, self.mail_pwd) # 发信账号连接
smtpObj.sendmail(self.mail_sender, self.receivers_eamil, message.as_string()) # 发送邮件
return True
except smtplib.SMTPException:
return False
def sendEmailCode(receiver, name):
code = str(random.randint(0, 10)) + str(random.randint(0, 9)) + str(random.randint(0, 9)) + str(
random.randint(0, 9)) + str(random.randint(0, 9)) + str(random.randint(0, 9))
subject = "【验证码】萌狼工作室旗下产品用户操作验证码"
content = """
<p>[萌狼工作室]操作验证,您的验证码为</p>
<h1>{}<h1>
<p>验证码10分钟内有效。</p>
<p>如果这不是你自己操作获得的邮件,忽略即可。</p>
<small>(本邮件自动发送,无需回复)</small>
""".format(code)
sent = EmailSentObject(receiver, name, subject, content).sent()
if sent:
return code
else:
return -1
def send(receiver,name,key):
if receiver == "":
return {"Error": 0, "提示": "未填写收信邮箱"} # 未填写邮箱
if name == "":
name = receiver
md5hash = hashlib.md5()
md5hash.update(key.encode(encoding='utf-8'))
md5 = md5hash.hexdigest()
if (md5 == "ffb4f6bee9830f0abbc215356a91ed2e"):
code = sendEmailCode(receiver, name)
if (code == -1):
# 邮件发送失败
return {"Error": -2, "提示": "发送失败"} # 邮件发送失败
return {"user": name, "oemail": receiver, "code": code}
return {"Error": -1, "提示": "没有权限"} # 无权限操作