Files
zsglpt/static/admin/assets/EmailPage-CaUZghxJ.js

2 lines
21 KiB
JavaScript
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.
import{a as $e,f as Ae,b as De,c as He,u as Ne}from"./email-BfqhxXOq.js";import{S as L,_ as Fe,r as p,T as pe,U as ze,c as ce,o as Ie,e as T,f as o,J as O,g as l,w as n,n as f,I as Qe,h as M,x as _,y as d,m as u,j as C,F as ae,p as fe,K as U,L as c}from"./index-Da0EvMWc.js";async function je(){const{data:v}=await L.get("/smtp/configs");return v}async function Ke(v){const{data:y}=await L.post("/smtp/configs",v);return y}async function Oe(v,y){const{data:h}=await L.put(`/smtp/configs/${v}`,y);return h}async function Ge(v){const{data:y}=await L.delete(`/smtp/configs/${v}`);return y}async function Je(v,y){const{data:h}=await L.post(`/smtp/configs/${v}/test`,{email:y});return h}async function Re(v){const{data:y}=await L.post(`/smtp/configs/${v}/primary`);return y}async function We(){const{data:v}=await L.post("/smtp/configs/primary/clear");return v}const Xe={class:"page-stack"},Ye={class:"app-page-title"},Ze={class:"toolbar"},el={class:"help app-muted"},ll={class:"section-head"},tl={class:"table-wrap"},al={class:"stat-value"},sl={class:"stat-value ok"},nl={class:"stat-value err"},ol={class:"stat-value"},il={class:"sub-stats"},ul={class:"help app-muted"},rl={class:"section-head"},dl={class:"toolbar"},ml={class:"table-wrap"},pl=["title"],cl=["title"],fl=["title"],_l={class:"pagination"},vl={class:"page-hint app-muted"},yl={style:{width:"100%"}},bl={key:0,class:"help"},gl={key:0},hl={key:0},wl={key:0},kl={class:"dialog-actions"},_e=15,Vl={__name:"EmailPage",setup(v){const y=p(!1),h=p(!1),r=pe({enabled:!1,failover_enabled:!0,register_verify_enabled:!1,task_notify_enabled:!1,base_url:"",updated_at:null});let E=null;async function se(){y.value=!0;try{const s=await $e();r.enabled=!!s.enabled,r.failover_enabled=!!s.failover_enabled,r.register_verify_enabled=!!s.register_verify_enabled,r.task_notify_enabled=!!s.task_notify_enabled,r.base_url=s.base_url||"",r.updated_at=s.updated_at||null}catch{}finally{y.value=!1}}async function ve(){if(!y.value){h.value=!0;try{const s=await Ne({enabled:r.enabled,failover_enabled:r.failover_enabled,register_verify_enabled:r.register_verify_enabled,task_notify_enabled:r.task_notify_enabled,base_url:(r.base_url||"").trim()});if(!s?.success){c.error(s?.error||"更新失败");return}c.success("邮件设置已更新"),await se()}catch{}finally{h.value=!1}}}function D(){E&&window.clearTimeout(E),E=window.setTimeout(ve,300)}ze(()=>{E&&window.clearTimeout(E),E=null});const G=p(!1),J=p([]),S=p(!1),g=p(!1),R=p(!1),N=p(!1),a=pe({id:null,name:"默认配置",enabled:!0,host:"",port:465,username:"",password:"",use_ssl:!0,use_tls:!1,sender_name:"自动化学习",sender_email:"",daily_limit:0,priority:0}),F=[{key:"custom",label:"自定义(手动填写)",defaults:null,note:"适用于其他邮箱/自建SMTP",links:[]},{key:"gmail",label:"Gmail",defaults:{host:"smtp.gmail.com",port:465,use_ssl:!0,use_tls:!1},note:"通常需要开启两步验证并创建应用专用密码App Password",links:[{label:"SMTP 设置说明",url:"https://support.google.com/mail/answer/7126229?hl=zh-Hans"},{label:"App Password",url:"https://myaccount.google.com/apppasswords"}]},{key:"qq",label:"QQ 邮箱",defaults:{host:"smtp.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并获取授权码不是QQ登录密码",links:[{label:"QQ邮箱 SMTP 帮助",url:"https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256"}]},{key:"163",label:"163 邮箱",defaults:{host:"smtp.163.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱 SMTP 帮助",url:"https://help.mail.163.com/faqDetail.do?code=d7a5dc8471a22b76"}]},{key:"126",label:"126 邮箱",defaults:{host:"smtp.126.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱帮助",url:"https://help.mail.163.com/"}]},{key:"outlook",label:"Outlook/Hotmail",defaults:{host:"smtp-mail.outlook.com",port:587,use_ssl:!1,use_tls:!0},note:"建议使用 TLS 587部分账号需开启 SMTP AUTH",links:[{label:"微软 SMTP 设置",url:"https://support.microsoft.com/office/pop-imap-and-smtp-settings-for-outlook-com-d088b0b7-0d38-4f9a-bc5d-509f9e4c6d3d"}]},{key:"office365",label:"Microsoft 365/Exchange",defaults:{host:"smtp.office365.com",port:587,use_ssl:!1,use_tls:!0},note:"企业邮箱常用配置(需启用 SMTP AUTH",links:[{label:"微软官方说明",url:"https://learn.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission"}]},{key:"icloud",label:"iCloud",defaults:{host:"smtp.mail.me.com",port:587,use_ssl:!1,use_tls:!0},note:"需要在 Apple ID 中生成“App 专用密码”",links:[{label:"Apple 邮件服务器设置",url:"https://support.apple.com/zh-cn/HT202304"}]},{key:"tencent_exmail",label:"腾讯企业邮箱",defaults:{host:"smtp.exmail.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"腾讯企业邮箱帮助",url:"https://service.exmail.qq.com/cgi-bin/help?subtype=1&id=23&no=1001068"}]},{key:"aliyun_exmail",label:"阿里企业邮箱",defaults:{host:"smtp.mxhichina.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"阿里云文档",url:"https://help.aliyun.com/document_detail/50652.html"}]}],q=p("custom"),k=ce(()=>F.find(s=>s.key===q.value)||F[0]),ye=ce(()=>g.value&&R.value?"留空保持不变":"SMTP密码或授权码");function be(s){const e=String(s?.host||"").trim().toLowerCase();return e&&{"smtp.gmail.com":"gmail","smtp.qq.com":"qq","smtp.163.com":"163","smtp.126.com":"126","smtp-mail.outlook.com":"outlook","smtp.office365.com":"office365","smtp.mail.me.com":"icloud","smtp.exmail.qq.com":"tencent_exmail","smtp.mxhichina.com":"aliyun_exmail"}[e]||"custom"}function ge(s){const e=F.find(i=>i.key===s);!e||!e.defaults||(a.host=e.defaults.host,a.port=e.defaults.port,a.use_ssl=e.defaults.use_ssl,a.use_tls=e.defaults.use_tls)}function ne(){a.id=null,a.name="默认配置",a.enabled=!0,a.host="",a.port=465,a.username="",a.password="",a.use_ssl=!0,a.use_tls=!1,a.sender_name="自动化学习",a.sender_email="",a.daily_limit=0,a.priority=0,R.value=!1,N.value=!1,q.value="custom"}async function $(){G.value=!0;try{J.value=await je()}catch{J.value=[]}finally{G.value=!1}}function he(){g.value=!1,ne(),q.value="custom",S.value=!0}function we(s){g.value=!0,ne(),a.id=s.id,a.name=s.name||"默认配置",a.enabled=!!s.enabled,a.host=s.host||"",a.port=s.port||465,a.username=s.username||"",a.password="",a.use_ssl=!!s.use_ssl,a.use_tls=!!s.use_tls,a.sender_name=s.sender_name||"自动化学习",a.sender_email=s.sender_email||"",a.daily_limit=s.daily_limit??0,a.priority=s.priority??0,R.value=!!s.has_password,N.value=!!s.is_primary,q.value=be(s),S.value=!0}function oe(s){return s.is_primary?{label:"主",type:"warning"}:s.enabled?{label:"备用",type:"success"}:{label:"禁用",type:"info"}}function ke(s){return s.daily_limit&&s.daily_limit>0?`${s.daily_sent}/${s.daily_limit}`:`${s.daily_sent}/∞`}async function Ve(){if(!a.host.trim()){c.error("SMTP服务器地址不能为空");return}if(!a.username.trim()){c.error("SMTP用户名不能为空");return}const s={name:a.name.trim()||"默认配置",enabled:!!a.enabled,priority:Number(a.priority)||0,host:a.host.trim(),port:Number(a.port)||465,username:a.username.trim(),use_ssl:!!a.use_ssl,use_tls:!!a.use_tls,sender_name:(a.sender_name||"").trim(),sender_email:(a.sender_email||"").trim(),daily_limit:Number(a.daily_limit)||0};try{if(g.value){const e={...s};a.password&&(e.password=a.password);const i=await Oe(a.id,e);if(!i?.success){c.error(i?.error||"更新失败");return}c.success("保存成功")}else{const e={...s};a.password&&(e.password=a.password);const i=await Ke(e);if(!i?.success){c.error(i?.error||"创建失败");return}c.success("创建成功")}S.value=!1,await $()}catch{}}async function Se(){if(!g.value||!a.id){c.error("请先保存配置后再测试");return}let s;try{const e=await U.prompt("请输入测试收件邮箱","测试连接",{inputPlaceholder:"name@example.com",confirmButtonText:"发送测试邮件",cancelButtonText:"取消",inputValidator:i=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(i||"").trim()),inputErrorMessage:"邮箱格式不正确"});s=String(e.value||"").trim()}catch{return}try{const e=await Je(a.id,s);e?.success?(c.success("测试成功,邮件已发送"),await $()):await U.alert(e?.error||"测试失败","测试失败",{confirmButtonText:"知道了"})}catch{}}async function xe(){if(!(!g.value||!a.id)){try{await U.confirm("确定将该配置设为主配置吗?","设为主配置",{confirmButtonText:"设为主配置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const s=await Re(a.id);if(!s?.success){c.error(s?.error||"设置失败");return}c.success("已设为主配置"),S.value=!1,await $()}catch{}}}async function Te(){if(g.value){try{await U.confirm("确定取消主配置吗取消后将按优先级选择可用SMTP。","取消主配置",{confirmButtonText:"取消主配置",cancelButtonText:"保留",type:"warning"})}catch{return}try{const s=await We();if(!s?.success){c.error(s?.error||"操作失败");return}c.success("已取消主配置"),S.value=!1,await $()}catch{}}}async function Pe(){if(!(!g.value||!a.id)){try{await U.confirm("确定删除该SMTP配置吗此操作不可恢复。","删除配置",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const s=await Ge(a.id);if(!s?.success){c.error(s?.error||"删除失败");return}c.success("已删除"),S.value=!1,await $()}catch{}}}const W=p(!1),w=p({}),X=p(!1),z=p(""),I=p(""),Q=p(1),Y=p([]),Z=p(0),ee=p(1);function Ce(s){return{register:"注册验证",reset:"密码重置",bind:"邮箱绑定",task_complete:"任务完成"}[s]||s}function ie(s){return s?.username&&s?.user_id?`${s.username} (#${s.user_id})`:s?.user_id?`用户#${s.user_id}`:"系统"}async function Be(){W.value=!0;try{w.value=await Ae()}catch{w.value={}}finally{W.value=!1}}async function H(s=1){X.value=!0;try{const e={page:s,page_size:_e};z.value&&(e.type=z.value),I.value&&(e.status=I.value);const i=await De(e);Y.value=i?.logs||[],Z.value=i?.total||0,Q.value=i?.page||s,ee.value=i?.total_pages||1}catch{Y.value=[],Z.value=0,ee.value=1}finally{X.value=!1}}async function Me(){let s;try{const e=await U.prompt("请输入保留天数(将删除该天数之前的日志)","清理日志",{inputValue:"30",confirmButtonText:"清理",cancelButtonText:"取消",inputValidator:i=>{const V=parseInt(String(i),10);return Number.isFinite(V)&&V>=7},inputErrorMessage:"天数必须大于等于7"});s=parseInt(String(e.value),10)}catch{return}try{await U.confirm(`确定删除 ${s} 天之前的邮件日志吗?`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await He(s);if(!e?.success){c.error(e?.error||"清理失败");return}c.success(`已清理 ${e.deleted} 条日志`),await H(1)}catch{}}async function ue(){await Promise.all([se(),$(),Be(),H(1)])}return Ie(ue),(s,e)=>{const i=f("el-button"),V=f("el-switch"),m=f("el-form-item"),B=f("el-input"),re=f("el-form"),P=f("el-card"),A=f("el-tag"),b=f("el-table-column"),de=f("el-table"),j=f("el-col"),Ue=f("el-row"),x=f("el-option"),le=f("el-select"),Le=f("el-pagination"),Ee=f("el-link"),te=f("el-input-number"),qe=f("el-dialog"),K=Qe("loading");return _(),T("div",Xe,[o("div",Ye,[e[26]||(e[26]=o("h2",null,"邮件配置",-1)),o("div",Ze,[l(i,{onClick:ue},{default:n(()=>[...e[25]||(e[25]=[d("刷新",-1)])]),_:1})])]),O((_(),M(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[28]||(e[28]=o("h3",{class:"section-title"},"全局设置",-1)),l(re,{"label-width":"140px"},{default:n(()=>[l(m,{label:"启用邮件功能"},{default:n(()=>[l(V,{modelValue:r.enabled,"onUpdate:modelValue":e[0]||(e[0]=t=>r.enabled=t),disabled:h.value,onChange:D},null,8,["modelValue","disabled"])]),_:1}),l(m,{label:"启用故障转移"},{default:n(()=>[l(V,{modelValue:r.failover_enabled,"onUpdate:modelValue":e[1]||(e[1]=t=>r.failover_enabled=t),disabled:h.value,onChange:D},null,8,["modelValue","disabled"])]),_:1}),l(m,{label:"启用注册邮箱验证"},{default:n(()=>[l(V,{modelValue:r.register_verify_enabled,"onUpdate:modelValue":e[2]||(e[2]=t=>r.register_verify_enabled=t),disabled:h.value,onChange:D},null,8,["modelValue","disabled"])]),_:1}),l(m,{label:"启用任务完成通知"},{default:n(()=>[l(V,{modelValue:r.task_notify_enabled,"onUpdate:modelValue":e[3]||(e[3]=t=>r.task_notify_enabled=t),disabled:h.value,onChange:D},null,8,["modelValue","disabled"])]),_:1}),l(m,{label:"网站基础URL"},{default:n(()=>[l(B,{modelValue:r.base_url,"onUpdate:modelValue":e[4]||(e[4]=t=>r.base_url=t),placeholder:"例如: https://example.com",disabled:h.value,onBlur:D},null,8,["modelValue","disabled"]),e[27]||(e[27]=o("div",{class:"help"},"用于生成邮件中的验证链接,留空则使用默认配置。",-1))]),_:1})]),_:1}),o("div",el,"最近更新时间:"+u(r.updated_at||"-"),1)]),_:1})),[[K,y.value]]),l(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[o("div",ll,[e[30]||(e[30]=o("h3",{class:"section-title"},"SMTP配置列表",-1)),l(i,{type:"primary",onClick:he},{default:n(()=>[...e[29]||(e[29]=[d("+ 添加配置",-1)])]),_:1})]),o("div",tl,[O((_(),M(de,{data:J.value,style:{width:"100%"}},{default:n(()=>[l(b,{label:"状态",width:"90"},{default:n(({row:t})=>[l(A,{type:oe(t).type,effect:"light"},{default:n(()=>[d(u(oe(t).label),1)]),_:2},1032,["type"])]),_:1}),l(b,{prop:"name",label:"名称","min-width":"160"}),l(b,{label:"服务器","min-width":"200"},{default:n(({row:t})=>[d(u(t.host)+":"+u(t.port),1)]),_:1}),l(b,{label:"今日/限额",width:"110"},{default:n(({row:t})=>[d(u(ke(t)),1)]),_:1}),l(b,{label:"成功率",width:"100"},{default:n(({row:t})=>[d(u(t.success_rate)+"%",1)]),_:1}),l(b,{label:"操作",width:"120",fixed:"right"},{default:n(({row:t})=>[l(i,{size:"small",onClick:me=>we(t)},{default:n(()=>[...e[31]||(e[31]=[d("编辑",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[K,G.value]])])]),_:1}),O((_(),M(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[36]||(e[36]=o("h3",{class:"section-title"},"邮件发送统计",-1)),l(Ue,{gutter:12},{default:n(()=>[l(j,{xs:12,sm:6},{default:n(()=>[l(P,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:n(()=>[o("div",al,u(w.value.total_sent||0),1),e[32]||(e[32]=o("div",{class:"stat-label"},"总发送",-1))]),_:1})]),_:1}),l(j,{xs:12,sm:6},{default:n(()=>[l(P,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:n(()=>[o("div",sl,u(w.value.total_success||0),1),e[33]||(e[33]=o("div",{class:"stat-label"},"成功",-1))]),_:1})]),_:1}),l(j,{xs:12,sm:6},{default:n(()=>[l(P,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:n(()=>[o("div",nl,u(w.value.total_failed||0),1),e[34]||(e[34]=o("div",{class:"stat-label"},"失败",-1))]),_:1})]),_:1}),l(j,{xs:12,sm:6},{default:n(()=>[l(P,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:n(()=>[o("div",ol,u(w.value.success_rate||0)+"%",1),e[35]||(e[35]=o("div",{class:"stat-label"},"成功率",-1))]),_:1})]),_:1})]),_:1}),o("div",il,[l(A,{effect:"light"},{default:n(()=>[d("注册验证 "+u(w.value.register_sent||0),1)]),_:1}),l(A,{effect:"light"},{default:n(()=>[d("密码重置 "+u(w.value.reset_sent||0),1)]),_:1}),l(A,{effect:"light"},{default:n(()=>[d("邮箱绑定 "+u(w.value.bind_sent||0),1)]),_:1}),l(A,{effect:"light"},{default:n(()=>[d("任务完成 "+u(w.value.task_complete_sent||0),1)]),_:1})]),o("div",ul,"最后更新:"+u(w.value.last_updated||"-"),1)]),_:1})),[[K,W.value]]),l(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[o("div",rl,[e[38]||(e[38]=o("h3",{class:"section-title"},"邮件发送日志",-1)),o("div",dl,[l(le,{modelValue:z.value,"onUpdate:modelValue":e[5]||(e[5]=t=>z.value=t),style:{width:"140px"},onChange:e[6]||(e[6]=t=>H(1))},{default:n(()=>[l(x,{label:"全部类型",value:""}),l(x,{label:"注册验证",value:"register"}),l(x,{label:"密码重置",value:"reset"}),l(x,{label:"邮箱绑定",value:"bind"}),l(x,{label:"任务完成",value:"task_complete"})]),_:1},8,["modelValue"]),l(le,{modelValue:I.value,"onUpdate:modelValue":e[7]||(e[7]=t=>I.value=t),style:{width:"120px"},onChange:e[8]||(e[8]=t=>H(1))},{default:n(()=>[l(x,{label:"全部状态",value:""}),l(x,{label:"成功",value:"success"}),l(x,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),l(i,{type:"danger",plain:"",onClick:Me},{default:n(()=>[...e[37]||(e[37]=[d("清理日志",-1)])]),_:1})])]),o("div",ml,[O((_(),M(de,{data:Y.value,style:{width:"100%"}},{default:n(()=>[l(b,{prop:"created_at",label:"时间",width:"180"}),l(b,{prop:"email_to",label:"收件人","min-width":"180"}),l(b,{label:"来源用户","min-width":"160"},{default:n(({row:t})=>[o("span",{class:"ellipsis",title:ie(t)},u(ie(t)),9,pl)]),_:1}),l(b,{label:"类型",width:"120"},{default:n(({row:t})=>[d(u(Ce(t.email_type)),1)]),_:1}),l(b,{label:"主题","min-width":"220"},{default:n(({row:t})=>[o("span",{class:"ellipsis",title:t.subject},u(t.subject),9,cl)]),_:1}),l(b,{label:"状态",width:"90"},{default:n(({row:t})=>[l(A,{type:t.status==="success"?"success":"danger",effect:"light"},{default:n(()=>[d(u(t.status==="success"?"成功":"失败"),1)]),_:2},1032,["type"])]),_:1}),l(b,{label:"错误","min-width":"200"},{default:n(({row:t})=>[o("span",{class:"ellipsis",title:t.error_message||""},u(t.error_message||"-"),9,fl)]),_:1})]),_:1},8,["data"])),[[K,X.value]])]),o("div",_l,[l(Le,{"current-page":Q.value,"onUpdate:currentPage":e[9]||(e[9]=t=>Q.value=t),"page-size":_e,total:Z.value,layout:"prev, pager, next, ->, total",onCurrentChange:H},null,8,["current-page","total"]),o("div",vl,"第 "+u(Q.value)+" / "+u(ee.value)+" 页",1)])]),_:1}),l(qe,{modelValue:S.value,"onUpdate:modelValue":e[24]||(e[24]=t=>S.value=t),title:g.value?"编辑SMTP配置":"添加SMTP配置",width:"min(560px, 92vw)"},{footer:n(()=>[o("div",kl,[l(i,{onClick:Se},{default:n(()=>[...e[39]||(e[39]=[d("测试连接",-1)])]),_:1}),g.value&&N.value?(_(),M(i,{key:0,type:"warning",plain:"",onClick:Te},{default:n(()=>[...e[40]||(e[40]=[d("取消主配置",-1)])]),_:1})):C("",!0),g.value&&!N.value?(_(),M(i,{key:1,onClick:xe},{default:n(()=>[...e[41]||(e[41]=[d("设为主配置",-1)])]),_:1})):C("",!0),g.value?(_(),M(i,{key:2,type:"danger",plain:"",onClick:Pe},{default:n(()=>[...e[42]||(e[42]=[d("删除配置",-1)])]),_:1})):C("",!0),e[45]||(e[45]=o("div",{class:"spacer"},null,-1)),l(i,{onClick:e[23]||(e[23]=t=>S.value=!1)},{default:n(()=>[...e[43]||(e[43]=[d("取消",-1)])]),_:1}),l(i,{type:"primary",onClick:Ve},{default:n(()=>[...e[44]||(e[44]=[d("保存",-1)])]),_:1})])]),default:n(()=>[l(re,{"label-width":"120px"},{default:n(()=>[l(m,{label:"名称"},{default:n(()=>[l(B,{modelValue:a.name,"onUpdate:modelValue":e[10]||(e[10]=t=>a.name=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"启用"},{default:n(()=>[l(V,{modelValue:a.enabled,"onUpdate:modelValue":e[11]||(e[11]=t=>a.enabled=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"邮箱模板"},{default:n(()=>[o("div",yl,[l(le,{modelValue:q.value,"onUpdate:modelValue":e[12]||(e[12]=t=>q.value=t),placeholder:"选择常用邮箱模板",style:{width:"100%"},onChange:ge},{default:n(()=>[(_(),T(ae,null,fe(F,t=>l(x,{key:t.key,label:t.label,value:t.key},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),k.value.note||k.value.links&&k.value.links.length?(_(),T("div",bl,[k.value.note?(_(),T("span",gl,u(k.value.note),1)):C("",!0),k.value.links&&k.value.links.length?(_(),T(ae,{key:1},[k.value.note?(_(),T("span",hl," · ")):C("",!0),(_(!0),T(ae,null,fe(k.value.links,(t,me)=>(_(),T("span",{key:t.url},[l(Ee,{href:t.url,target:"_blank",type:"primary",underline:!1},{default:n(()=>[d(u(t.label),1)]),_:2},1032,["href"]),me<k.value.links.length-1?(_(),T("span",wl," · ")):C("",!0)]))),128))],64)):C("",!0)])):C("",!0)])]),_:1}),l(m,{label:"服务器"},{default:n(()=>[l(B,{modelValue:a.host,"onUpdate:modelValue":e[13]||(e[13]=t=>a.host=t),placeholder:"smtp.example.com"},null,8,["modelValue"])]),_:1}),l(m,{label:"端口"},{default:n(()=>[l(te,{modelValue:a.port,"onUpdate:modelValue":e[14]||(e[14]=t=>a.port=t),min:1,max:65535},null,8,["modelValue"])]),_:1}),l(m,{label:"用户名"},{default:n(()=>[l(B,{modelValue:a.username,"onUpdate:modelValue":e[15]||(e[15]=t=>a.username=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"密码"},{default:n(()=>[l(B,{modelValue:a.password,"onUpdate:modelValue":e[16]||(e[16]=t=>a.password=t),type:"password","show-password":"",placeholder:ye.value},null,8,["modelValue","placeholder"])]),_:1}),l(m,{label:"SSL"},{default:n(()=>[l(V,{modelValue:a.use_ssl,"onUpdate:modelValue":e[17]||(e[17]=t=>a.use_ssl=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"TLS"},{default:n(()=>[l(V,{modelValue:a.use_tls,"onUpdate:modelValue":e[18]||(e[18]=t=>a.use_tls=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"发件人名称"},{default:n(()=>[l(B,{modelValue:a.sender_name,"onUpdate:modelValue":e[19]||(e[19]=t=>a.sender_name=t)},null,8,["modelValue"])]),_:1}),l(m,{label:"发件人邮箱"},{default:n(()=>[l(B,{modelValue:a.sender_email,"onUpdate:modelValue":e[20]||(e[20]=t=>a.sender_email=t),placeholder:"可选"},null,8,["modelValue"])]),_:1}),l(m,{label:"每日限额"},{default:n(()=>[l(te,{modelValue:a.daily_limit,"onUpdate:modelValue":e[21]||(e[21]=t=>a.daily_limit=t),min:0,max:1e6},null,8,["modelValue"])]),_:1}),l(m,{label:"优先级"},{default:n(()=>[l(te,{modelValue:a.priority,"onUpdate:modelValue":e[22]||(e[22]=t=>a.priority=t),min:0,max:1e3},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},Tl=Fe(Vl,[["__scopeId","data-v-03fa4932"]]);export{Tl as default};