admin
sync ms
35429ce
raw
history blame
2.12 kB
import requests
import gradio as gr
from utils import API_SMTP, EN_US
ZH2EN = {
"收信人邮箱": "To email",
"标题": "Title",
"测试标题": "Test title",
"正文": "Content",
"SMTP 在线测试工具": "SMTP online tester",
"发信人昵称": "Sender name",
"测试昵称": "Test nickname",
"发信人邮箱": "From email",
"应用密钥": "API key",
"SMTP 服务器": "SMTP host",
"端口": "Port",
"发送状态": "Status",
}
def _L(zh_txt: str):
return ZH2EN[zh_txt] if EN_US else zh_txt
def infer(target, title, content, name, email, password, host, port):
try:
response = requests.get(
API_SMTP,
params={
"host": host,
"Port": port,
"key": password, # apikey
"email": email, # from
"mail": target, # to
"title": title, # subject
"name": name, # nickname
"text": content, # content
},
)
if response.status_code == 200:
result: dict = response.json()
return result.get("status")
else:
raise ConnectionError(f"{response.status_code}")
except Exception as e:
return f"{e}"
def smtp_tester():
return gr.Interface(
fn=infer,
inputs=[
gr.Textbox(label=_L("收信人邮箱"), placeholder="Recipient"),
gr.Textbox(label=_L("标题"), value=_L("测试标题")),
gr.TextArea(label=_L("正文"), value=_L("SMTP 在线测试工具")),
gr.Textbox(label=_L("发信人昵称"), value=_L("测试昵称")),
gr.Textbox(label=_L("发信人邮箱"), placeholder="Sender"),
gr.Textbox(label=_L("应用密钥"), placeholder="SMTP password"),
gr.Textbox(label=_L("SMTP 服务器"), value="smtp.163.com"),
gr.Slider(label=_L("端口"), minimum=0, maximum=65535, step=1, value=25),
],
outputs=gr.TextArea(label=_L("发送状态"), show_copy_button=True),
flagging_mode="never",
)