云梦无限邮箱系统
رفتن به کانال در Telegram
云梦无限邮箱系统是一款公益性的免费无限邮箱系统。 本邮箱系统搜集各类临时邮箱,各类无限邮箱,各类24小时邮箱和10分钟临时邮箱集一体的一款无限邮箱系统。 本软件永久免费使用,正常维护和搜集与更新。 若您有好的建议可以联系我们: @ymmykj
نمایش بیشتر3 645
مشترکین
-324 ساعت
+97 روز
+1530 روز
در حال بارگیری داده...
جذب مشترکین
ژوئن '26
ژوئن '26
+72
در 9 کانالها
مه '26
+78
در 0 کانالها
Get PRO
آوریل '26
+91
در 0 کانالها
Get PRO
مارس '26
+124
در 9 کانالها
Get PRO
فوریه '26
+95
در 0 کانالها
Get PRO
ژانویه '26
+89
در 11 کانالها
Get PRO
دسامبر '25
+72
در 0 کانالها
Get PRO
نوامبر '25
+145
در 9 کانالها
Get PRO
اکتبر '25
+117
در 10 کانالها
Get PRO
سپتامبر '25
+29
در 0 کانالها
Get PRO
اوت '25
+72
در 0 کانالها
Get PRO
ژوئیه '25
+73
در 0 کانالها
Get PRO
ژوئن '25
+52
در 0 کانالها
Get PRO
مه '25
+68
در 0 کانالها
Get PRO
آوریل '25
+67
در 0 کانالها
Get PRO
مارس '25
+106
در 0 کانالها
Get PRO
فوریه '25
+128
در 9 کانالها
Get PRO
ژانویه '25
+179
در 0 کانالها
Get PRO
دسامبر '24
+118
در 0 کانالها
Get PRO
نوامبر '24
+326
در 0 کانالها
Get PRO
اکتبر '24
+98
در 0 کانالها
Get PRO
سپتامبر '24
+102
در 0 کانالها
Get PRO
اوت '24
+199
در 10 کانالها
Get PRO
ژوئیه '24
+178
در 0 کانالها
Get PRO
ژوئن '24
+103
در 0 کانالها
Get PRO
مه '24
+207
در 0 کانالها
Get PRO
آوریل '24
+186
در 1 کانالها
Get PRO
مارس '24
+325
در 1 کانالها
Get PRO
فوریه '24
+259
در 7 کانالها
Get PRO
ژانویه '24
+295
در 0 کانالها
Get PRO
دسامبر '23
+138
در 0 کانالها
Get PRO
نوامبر '23
+175
در 0 کانالها
Get PRO
اکتبر '23
+190
در 0 کانالها
Get PRO
سپتامبر '23
+1 250
در 0 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 22 ژوئن | +1 | |||
| 21 ژوئن | +1 | |||
| 20 ژوئن | +2 | |||
| 19 ژوئن | +5 | |||
| 18 ژوئن | +3 | |||
| 17 ژوئن | +1 | |||
| 16 ژوئن | +4 | |||
| 15 ژوئن | +8 | |||
| 14 ژوئن | +4 | |||
| 13 ژوئن | +4 | |||
| 12 ژوئن | +6 | |||
| 11 ژوئن | +1 | |||
| 10 ژوئن | +5 | |||
| 09 ژوئن | +2 | |||
| 08 ژوئن | +6 | |||
| 07 ژوئن | +3 | |||
| 06 ژوئن | +2 | |||
| 05 ژوئن | +3 | |||
| 04 ژوئن | +2 | |||
| 03 ژوئن | +1 | |||
| 02 ژوئن | +4 | |||
| 01 ژوئن | +4 |
پستهای کانال
| 2 | 916忆梦云商城官网
https://shop.ymy9.com/
站长联系方式:
https://a.ym0.top
商户免费成品APP卡密验证注入程序:
https://arm.ymmynb.com/
(入住后有流水可以联系站长免费获取永久卡密)
🎉实力货源站或者实力项目大牛入驻可免费给广告位和置顶推荐
(入驻推荐对接商家:神西货源,晨星货源)
🔥满5即可提现 满30默认自动提现
🔥结算支持:微信/支付宝/银行卡
🔥结算时间:正常每天中午提现
🔥提现无手续费
✨常年稳定支付三方通道
✨支付费率可切换买家/商家承担
✨高配服务器+cdn
✨入驻在用平台即可免费提供APP直接注入验证的程序和网络验证程序
❇️优质高流水商户可联系站长调整费率或者开通单独费率自定义通道
♨️减少投诉的方法:做好售后,把店铺联系方式弄成可以联系到你的,可以把你想说的话在公告里面声明
✅拥有ICP+edi双证正规平台
✨优质商户可提供企业微信客服功能给商家使用
✨优质商户可以给免费提供短链接跳转或者免费搭建引导页功能
🎉已稳定运营3年,每日正常结算
🎉平台流水满100即可抽奖
🎉流水挑战满100即可获得1元奖励
🎉快来入驻吧,有量可谈任何一切
🎉平台免费注册商户账号
🎉有量费率可商量调整,支付宝通道量大最低可调至3%
TG通知频道: @ymysc
TG通知频道: @ymysc
TG通知频道: @ymysc
TG问题处理客服: @ymmykj | 137 |
| 3 | 调用接口的时候很慢 | 158 |
| 4 | 因为跨域的问题,HTML访问很慢的 | 157 |
| 5 | 最好还是使用php写 | 155 |
| 6 | // 启动自动刷新 5秒一次
function startAutoRefresh() {
stopAutoRefresh();
if(!currentMailbox) return;
refreshTimer = setInterval(()=>{
const modal = $("#emailModal");
if(!modal.classList.contains("show")) loadEmails();
},5000);
}
// 停止自动刷新
function stopAutoRefresh() {
if(refreshTimer) {
clearInterval(refreshTimer);
refreshTimer = null;
}
}
// 页面加载完成初始化
window.onload = init;
</script>
</body>
</html> | 1 |
| 7 | const json = await res.json();
const mail = json.data.email;
// 填充弹窗信息
$("#modalSubject").textContent = mail.subject || "无主题";
$("#modalFrom").textContent = mail.from || "";
$("#modalTo").textContent = mail.to || currentMailbox;
const t = mail.receivedAt mail.createdAt mail.time;
$("#modalTime").textContent = t;
// 渲染邮件正文
const bodyWrap = $("#modalBody");
if(mail.html) bodyWrap.innerHTML = mail.html;
else bodyWrap.textContent = mail.text || "无邮件正文";
// 渲染附件
renderAttachments(mail);
// 显示弹窗
$("#emailModal").classList.add("show");
} catch(err) {
alert("读取邮件失败:"+err.message);
startAutoRefresh();
}
}
// 渲染附件列表
function renderAttachments(mail) {
const wrap = $("#attachWrap");
wrap.innerHTML = "";
const atts = mail.attachments || [];
if(atts.length === 0) return;
let html = <div class="attach-title">附件列表:</div>;
atts.forEach((att, idx)=>{
const name = escapeHtml(att.filename || "未知文件");
html +=
<div class="attach-item">
<span>${name}</span>
<button class="btn btn-primary download-att" data-index="${idx}">下载</button>
</div>;
})
wrap.innerHTML = html;
// 绑定下载按钮
$$(".download-att").forEach(btn=>{
btn.onclick = async e=>{
const index = e.target.dataset.index;
await downloadAttachment(currentEmailId, index);
}
})
}
// 附件下载(fetch blob携带请求头)
async function downloadAttachment(emailId, index) {
try {
const url = ${API_BASE}/api/emails/${emailId}/attachments/${index};
const res = await fetch(url, {headers: apiHeaders()});
const blob = await res.blob();
const a = document.createElement("a");
const urlObj = URL.createObjectURL(blob);
a.href = urlObj;
const name = res.headers.get("filename") || "attachment";
a.download = name;
document.body.appendChild(a);
a.click();
URL.revokeObjectURL(urlObj);
a.remove();
showToast("附件下载成功");
} catch(err) {
alert("附件下载失败:"+err.message);
}
}
// 关闭邮件弹窗
function closeMailModal() {
$("#emailModal").classList.remove("show");
loadEmails();
startAutoRefresh();
}
// 删除当前打开的邮件
async function deleteCurrentEmail() {
if(!currentEmailId) return;
try {
const res = await fetch(${API_BASE}/api/emails/${currentEmailId}, {
method: "DELETE",
headers: apiHeaders()
});
const json = await res.json();
if(json.success) {
showToast("邮件已删除");
closeMailModal();
} else throw new Error(json.msg || "删除失败");
} catch(err) {
alert("删除邮件失败:"+err.message);
}
}
// 复制当前邮箱地址
async function copyEmail() {
const val = $("#currentMailInput").value;
if(!val) return showToast("暂无邮箱可复制");
try {
await navigator.clipboard.writeText(val);
showToast("复制成功");
} catch(e) {
// 降级复制
const input = $("#currentMailInput");
input.select();
document.execCommand("copy");
showToast("复制成功");
}
} | 1 |
| 8 | const domains = json.data.domains || [];
const defaultDomain = json.data.defaultDomain;
const select = $("#domainSelect");
select.innerHTML = "";
domains.forEach(d=>{
const opt = document.createElement("option");
opt.value = d.name;
opt.textContent = d.name;
if(d.name === defaultDomain) opt.selected = true;
select.appendChild(opt);
})
} catch(err) {
console.error("加载域名失败", err);
showToast("域名加载失败,请刷新页面重试");
}
}
// 创建邮箱
async function createMailbox() {
const prefix = $("#prefixInput").value.trim();
const domainName = $("#domainSelect").value;
if(!prefix) return showToast("请输入邮箱前缀或随机生成");
try {
const res = await fetch(${API_BASE}/api/mailboxes, {
method: "POST",
headers: apiHeaders(),
body: JSON.stringify({prefix, domainName})
});
const json = await res.json();
if(!json.success) throw new Error(json.msg || "创建失败");
currentMailbox = json.data.mailbox.fullAddress;
$("#currentMailInput").value = currentMailbox;
showToast("邮箱创建成功");
loadEmails();
startAutoRefresh();
} catch(err) {
alert("创建邮箱失败:"+err.message);
}
}
// 加载邮件列表
async function loadEmails() {
if(!currentMailbox) return;
try {
const url = ${API_BASE}/api/emails?mailbox=${encodeURIComponent(currentMailbox)}&page=1&limit=20;
const res = await fetch(url, {headers: apiHeaders()});
const json = await res.json();
const emails = json.data.emails || [];
const pagination = json.data.pagination || {total:0};
renderEmails(emails, pagination);
} catch(err) {
console.error("获取邮件列表失败", err);
}
}
// 渲染邮件列表与统计
function renderEmails(emails, pagination) {
const listWrap = $("#emailList");
listWrap.innerHTML = "";
let unreadCount = 0;
emails.forEach(mail=>{
const isUnread = mail.read === false || mail.isRead === false;
if(isUnread) unreadCount++;
const time = mail.receivedAt mail.createdAt mail.time mail.sentAt "";
const subj = escapeHtml(mail.subject || "(无主题)");
const from = escapeHtml(mail.from || "未知发件人");
const id = mail._id || mail.id;
const item = document.createElement("div");
item.className = "email-item " + (isUnread ? "unread" : "");
item.dataset.emailId = id;
item.innerHTML =
<div class="email-head">
<span class="email-subject">${subj}${isUnread?'<span class="unread-tag">未读</span>':''}</span>
<span class="email-time">${escapeHtml(time)}</span>
</div>
<div class="email-from">发件人:${from}</div>
;
item.onclick = ()=>openEmail(id);
listWrap.appendChild(item);
})
$("#mailStatText").textContent = 当前邮箱:共 ${pagination.total} 封邮件 / ${unreadCount} 封未读;
}
// 打开邮件详情弹窗
async function openEmail(emailId) {
stopAutoRefresh();
currentEmailId = emailId;
try {
const res = await fetch(${API_BASE}/api/emails/${emailId}, {headers: apiHeaders()}); | 1 |
| 9 | </div>
<button class="btn btn-outline" id="randBtn">随机生成</button>
<button class="btn btn-primary" id="createBtn">创建邮箱</button>
</div>
<div class="current-mail-wrap">
<input type="text" id="currentMailInput" readonly placeholder="创建后此处显示邮箱地址">
<button class="btn btn-gray" id="copyBtn">复制邮箱</button>
</div>
</div>
<!-- 邮件列表卡片 -->
<div class="card">
<div class="card-title">收件箱</div>
<div class="mail-stat" id="mailStatText">暂无邮箱,请先创建</div>
<div class="email-list" id="emailList"></div>
</div>
</div>
<!-- 邮件详情弹窗 -->
<div class="modal-mask" id="emailModal">
<div class="modal-box">
<div class="modal-header">
<h2 id="modalSubject"></h2>
</div>
<div class="meta-row">
<div>发件人:<span id="modalFrom"></span></div>
<div>收件地址:<span id="modalTo"></span></div>
<div>时间:<span id="modalTime"></span></div>
</div>
<div class="mail-body" id="modalBody"></div>
<div id="attachWrap"></div>
<div class="modal-footer">
<button class="btn btn-danger" id="delMailBtn">删除邮件</button>
<button class="btn btn-gray" id="closeModalBtn">关闭</button>
</div>
</div>
</div>
<!-- Toast提示 -->
<div class="toast" id="toast"></div>
<script>
// 全局常量与变量
const API_BASE = "https://ym-mail.ymmynb.com";
const API_VERSION = "1.4";
let currentMailbox = "";
let currentEmailId = "";
let refreshTimer = null;
const $ = s => document.querySelector(s);
const $$ = s => document.querySelectorAll(s);
// 请求头构造函数
function apiHeaders() {
return {
"x-api-version": API_VERSION,
"Content-Type": "application/json"
};
}
// 生成10位随机字母数字前缀
function randomPrefix() {
const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
let res = "";
for(let i=0;i<10;i++){
res += chars[Math.floor(Math.random()*chars.length)];
}
return res;
}
// HTML转义防XSS
function escapeHtml(text) {
if(!text) return "";
return text.replace(/&/g,"&")
.replace(/</g,"<")
.replace(/>/g,">")
.replace(/"/g,""")
.replace(/'/g,"'");
}
// Toast弹窗提示
function showToast(msg) {
const toast = $("#toast");
toast.textContent = msg;
toast.classList.add("show");
setTimeout(()=>toast.classList.remove("show"),2200);
}
// 初始化入口
function init() {
bindEvents();
loadDomains();
$("#prefixInput").value = randomPrefix();
}
// 绑定页面所有按钮事件
function bindEvents() {
$("#randBtn").onclick = ()=>{
$("#prefixInput").value = randomPrefix();
};
$("#createBtn").onclick = createMailbox;
$("#copyBtn").onclick = copyEmail;
$("#closeModalBtn").onclick = closeMailModal;
$("#delMailBtn").onclick = deleteCurrentEmail;
$("#emailModal").onclick = e=>{
if(e.target.id === "emailModal") closeMailModal();
}
}
// 加载域名列表
async function loadDomains() {
try {
const res = await fetch(${API_BASE}/api/domains, {headers: apiHeaders()});
const json = await res.json(); | 1 |
| 10 | margin-bottom: 6px;
}
.email-subject {
font-weight: 600;
}
.email-time {
font-size: 0.85rem;
color: #64748b;
}
.email-from {
font-size: 0.9rem;
color: #475569;
}
.unread-tag {
display: inline-block;
background: #2563eb;
color: white;
font-size: 0.7rem;
padding: 2px 6px;
border-radius: 4px;
margin-left: 8px;
}
/* 弹窗样式 */
.modal-mask {
position: fixed;
inset: 0;
background: rgba(0,0,0,0.5);
display: grid;
place-items: center;
padding: 16px;
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity 0.3s ease, visibility 0.3s;
z-index: 999;
}
.modal-mask.show {
opacity: 1;
visibility: visible;
pointer-events: all;
}
.modal-box {
width: 100%;
max-width: 720px;
max-height: 85vh;
overflow-y: auto;
background: white;
border-radius: 16px;
padding: 24px;
display: flex;
flex-direction: column;
gap: 16px;
}
@media (max-width:640px) {
.modal-box {
max-width: 100%;
height: 100vh;
max-height: 100vh;
border-radius: 0;
}
.mail-create-row {
flex-direction: column;
}
.input-group {
width: 100%;
}
.current-mail-wrap {
flex-direction: column;
}
}
.modal-header h2 {
font-size: 1.3rem;
color: #1e40af;
}
.meta-row {
font-size: 0.95rem;
color: #374151;
line-height: 1.6;
}
.mail-body {
border-top: 1px solid #e5e7eb;
padding-top: 16px;
min-height: 180px;
line-height: 1.7;
}
.attach-title {
font-weight: 600;
margin-top: 10px;
margin-bottom: 8px;
}
.attach-item {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 12px;
background: #f3f4f6;
border-radius: 8px;
margin-bottom: 6px;
}
.modal-footer {
display: flex;
gap: 10px;
justify-content: flex-end;
margin-top: 12px;
border-top: 1px solid #e5e7eb;
padding-top: 16px;
}
/* Toast提示 */
.toast {
position: fixed;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
background: #1f2937;
color: white;
padding: 10px 20px;
border-radius: 8px;
font-size: 0.9rem;
opacity: 0;
visibility: hidden;
transition: all 0.3s;
z-index: 1000;
}
.toast.show {
opacity: 1;
visibility: visible;
}
</style>
</head>
<body>
<div class="container">
<div class="hero">
<h1>无限临时邮箱</h1>
<p>一次性临时收件邮箱,无需注册,自动接收邮件</p>
</div>
<!-- 邮箱创建卡片 -->
<div class="card">
<div class="card-title">创建临时邮箱</div>
<div class="mail-create-row">
<div class="input-group">
<input type="text" id="prefixInput" placeholder="输入邮箱前缀">
<select id="domainSelect"></select> | 1 |
| 11 | <!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>无限临时邮箱</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: system-ui, -apple-system, sans-serif;
}
body {
background: linear-gradient(135deg, #e8f4ff, #f0f8ff);
min-height: 100vh;
padding: 20px 16px;
color: #1f2937;
}
.container {
max-width: 1100px;
margin: 0 auto;
}
/* 顶部Hero */
.hero {
text-align: center;
margin-bottom: 32px;
}
.hero h1 {
font-size: 2.2rem;
color: #1d4ed8;
margin-bottom: 10px;
}
.hero p {
color: #4b5563;
font-size: 1rem;
}
/* 卡片通用样式 */
.card {
background: rgba(255,255,255,0.85);
backdrop-filter: blur(10px);
border-radius: 16px;
box-shadow: 0 4px 20px rgba(30,64,175,0.1);
padding: 24px;
margin-bottom: 24px;
}
.card-title {
font-size: 1.2rem;
font-weight: 600;
margin-bottom: 16px;
color: #1e40af;
}
/* 邮箱创建区域 */
.mail-create-row {
display: flex;
flex-wrap: wrap;
gap: 10px;
align-items: center;
margin-bottom: 16px;
}
.input-group {
flex: 1;
min-width: 160px;
display: flex;
gap: 8px;
}
input, select {
padding: 12px 14px;
border: 1px solid #cbd5e1;
border-radius: 10px;
font-size: 1rem;
width: 100%;
outline: none;
transition: 0.2s border;
background: #fff;
}
input:focus, select:focus {
border-color: #3b82f6;
box-shadow: 0 0 0 3px rgba(59,130,246,0.15);
}
.btn {
padding: 12px 18px;
border: none;
border-radius: 10px;
font-size: 0.95rem;
cursor: pointer;
font-weight: 500;
transition: all 0.2s;
}
.btn-primary {
background: linear-gradient(135deg, #2563eb, #3b82f6);
color: white;
}
.btn-primary:hover {
opacity: 0.92;
transform: translateY(-1px);
}
.btn-outline {
background: transparent;
border: 1px solid #3b82f6;
color: #2563eb;
}
.btn-danger {
background: #ef4444;
color: white;
}
.btn-gray {
background: #e5e7eb;
color: #374151;
}
/* 当前邮箱展示 */
.current-mail-wrap {
display: flex;
gap: 10px;
margin-top: 12px;
}
/* 邮件统计 */
.mail-stat {
margin-bottom: 14px;
color: #374151;
font-size: 0.95rem;
}
/* 邮件列表 */
.email-list {
display: flex;
flex-direction: column;
gap: 10px;
}
.email-item {
padding: 14px;
border-radius: 12px;
border: 1px solid #e2e8f0;
cursor: pointer;
transition: 0.2s;
}
.email-item:hover {
background: #f8fafc;
}
.email-item.unread {
border-left: 5px solid #2563eb;
background: #eff6ff;
}
.email-head {
display: flex;
justify-content: space-between; | 1 |
| 12 | 直接喂给AI就行,我尝试喂给豆包正常可以使用的 | 170 |
| 13 | 云梦无线邮箱系统html对接AI的提示词.md | 156 |
| 14 | ## 9. 特别注意事项
- 所有 API 请求(除 /api/version)都必须在请求头中添加 x-api-version: 1.4
- 邮件详情字段可能为 _id 或 id,read 或 isRead,需兼容处理
- 时间字段可能为 receivedAt、createdAt、time、sentAt,需兼容
- 附件下载不要使用 <a> 直接链接,必须通过 fetch 携带请求头
- 弹窗显示/隐藏使用 class 控制(show),而非 display: none,以支持过渡动画
- 页面加载时默认生成随机前缀,但不自动创建邮箱,需用户点击“创建邮箱”
- 邮件详情弹窗初始不可见,且不占页面空间
- 自动刷新仅在已创建邮箱且弹窗未打开时工作
## 10. 输出要求
最终 AI 应生成一个完整的 index.html 文件,包含所有样式、结构和脚本,满足以上所有功能与界面要求,可直接部署使用。代码应清晰、注释适当,并包含必要的错误处理。
---
以上提示词可作为 AI 开发的依据,涵盖所有关键点。您可将其直接喂给 AI,即可生成符合要求的单页应用。 | 1 |
| 15 | 以下是一份可直接喂给 AI 的提示词(Prompt),用于让 AI 理解并复现或对接「无限临时邮箱收件网站」单页 HTML 应用。您可以将此文档作为系统提示或参考文档,指导 AI 生成相同功能的前端页面。
---
# 无限临时邮箱收件网站 – 单页 HTML 应用规范
## 1. 项目概述
构建一个完全自包含的 index.html 单页应用,提供临时邮箱的创建、邮件列表查看、邮件详情阅读、附件下载和邮件删除功能。所有交互在浏览器端完成,无需后端服务,仅依赖指定的 RESTful API。
## 2. 技术栈
- 纯 HTML5 + CSS3 + JavaScript (ES6)
- 无任何第三方库或框架(如 jQuery、React、Vue 等)
- 所有样式和脚本均内嵌在单个 .html 文件中
- 兼容 PC 和移动端(响应式设计)
## 3. API 基础信息
- 基础地址:https://ym-mail.ymmynb.com
- API 版本:1.4(请求头 x-api-version: 1.4)
- **所有请求(除 /api/version)必须携带请求头**:
- x-api-version: 1.4
- Content-Type: application/json(对 POST/DELETE 等)
## 4. 核心功能列表加载域名列表列表**
- 页面加载时自动请求 GET /api/domains
- 解析响应中的 data.domains(可能为对象数组,需提取 name 字段)和 data.defaultDomain
- 将域名渲染到 <select> 下拉框中,并默认选中默认域名
创建邮箱邮箱**
- 用户可手动输入邮箱前缀,或点击“随机生成”按钮自动生成10位字母数字组合
- 点击“创建邮箱”按钮,请求 POST /api/mailboxes,Body 为 { "prefix": "...", "domainName": "..." }
- 创建成功后,将返回的 fullAddress 显示在“当前邮箱”只读输入框中,并自动加载邮件列表
显示当前邮箱和复制复制**
- 当前邮箱地址以只读输入框展示,并提供“复制”按钮(使用 Clipboard API 或 fallback)
- 复制成功/失败均有 Toast 提示
邮件列表展示展示**
- 自动请求 GET /api/emails?mailbox=当前邮箱&page=1&limit=20
- 列表项显示:邮件主题、发件人、收件时间(格式化显示)
- 未读邮件高亮(左侧边框或背景色),并显示“未读”标记
- 统计信息显示“当前邮箱:X 封邮件 / Y 封未读”(从分页信息 pagination.total 和邮件 read 字段计算)
自动刷新刷新**
- 创建邮箱成功后,启动定时器,每隔 5 秒自动刷新邮件列表
- 刷新仅针对当前邮箱,使用相同的 /api/emails 接口
- 打开邮件详情弹窗时暂停自动刷新,关闭后恢复
邮件详情弹窗弹窗**
- 点击邮件列表项,调用 GET /api/emails/:id 获取完整内容
- 弹窗显示:主题、发件人、收件人、时间、正文(优先显示 html,若无则显示 text)
- 附件列表:显示文件名,点击后下载(需携带版本号请求头)
- PC 端居中弹窗,手机端全屏显示
- 弹窗底部有“删除邮件”和“关闭”按钮
删除邮件邮件**
- 点击弹窗中的“删除邮件”按钮,调用 DELETE /api/emails/:id
- 成功后关闭弹窗并刷新邮件列表
附件下载下载**
- 附件下载需通过 GET /api/emails/:id/attachments/:index 接口
- 由于浏览器直接 <a> 链接无法携带自定义请求头,必须使用 fetch 获取 blob 并动态创建下载链接
- 下载时需携带 x-api-version 头,否则接口会报错
错误处理处理**
- 接口失败时,创建邮箱失败用弹窗或 Toast 提示
- 获取邮件列表失败输出到 console.error
- 打开邮件失败使用 alert 提示
- 删除失败使用 alert 提示
## 5. 界面与样式要风格风格**:现代 SaaS 风格,卡片式布局,圆角,柔和阴影,渐变按钮,毛玻璃输入框 顶部 Hero 区域区域**:展示网站名称“无限临时邮箱”和说明文案 响应式应式**:手机端自适应,按钮和输入框宽度撑满,弹窗全屏 输入框/选择框择框**:优化默认样式,自定义外观,圆角,聚焦高亮 邮件列表列表**:美观,悬停效果,未读高亮 弹窗弹窗**:初始完全隐藏(opacity:0; visibility:hidden; pointer-events:none),显示时添加 show 类,居中或全屏
## 6. 重要交互细邮件详情弹窗打开时开时**:暂停自动刷新 关闭弹窗后窗后**:自动刷新邮件列表(调用 loadEmails()) 未点击邮件时件时**:详情弹窗不占页面空间(即不在右侧侧边栏显示)
## 7. 必须实现的 JavaScript 全局变量和函数
const API_BASE = "https://ym-mail.ymmynb.com";
const API_VERSION = "1.4";
let currentMailbox = "";
let currentEmailId = "";
let refreshTimer = null;
function apiHeaders() { /* 返回包含版本和 Content-Type 的 headers 对象 */ }
function randomPrefix() { /* 生成 10 位随机字母数字 */ }
function escapeHtml(text) { /* 转义 HTML 实体 */ }
function init() { /* 初始化入口 */ }
function loadDomains() { /* 加载域名列表并渲染下拉 */ }
function createMailbox() { /* 创建邮箱 */ }
function loadEmails() { /* 请求邮件列表并渲染 */ }
function renderEmails(emails, pagination) { /* 渲染列表和统计 */ }
function openEmail(id) { /* 打开邮件详情弹窗 */ }
function renderAttachments(mail) { /* 渲染附件列表(已整合到详情中,但保留空函数占位) */ }
function closeMailModal() { /* 关闭弹窗并刷新 */ }
function deleteCurrentEmail() { /* 删除当前邮件 */ }
function copyEmail() { /* 复制当前邮箱地址 */ }
function startAutoRefresh() { /* 启动定时器 */ }
function stopAutoRefresh() { /* 停止定时器 */ }
## 8. 数据流与接口映域名列表列表**:GET /api/domains → 响应中提取 data.domains(可能为对象数组,取 name)和 data.defaultDomain 创建邮箱邮箱**:POST /api/mailboxes → Body: { prefix, domainName } → 返回 data.mailbox.fullAddress 邮件列表列表**:GET /api/emails?mailbox=xxx&page=1&limit=20 → 响应 data.emails 和 data.pagination 邮件详情详情**:GET /api/emails/:id → 响应 data.email(包含 html, text, attachments 等) 删除邮件邮件**:DELETE /api/emails/:id → 成功返回 { success: true } 附件下载下载**:GET /api/emails/:id/attachments/:index(需携带 x-api-version),返回文件二进制流 | 1 |
| 16 | 不对不对,还是要么写一个中转的,要么写php的,Php的自己看开发文档里面有例子 | 145 |
| 17 | 等我用gpt给你们写一个,直接可以喂给AI就能自己写界面的提示词 | 143 |
| 18 | 云梦无限邮箱系统对接.html | 141 |
| 19 | 哦 谢bro我有个想法 把塑料眼镜蛇玩具丢山上抛豁豁的草里面会不会随机吓死一个拾菌人🥸 | 323 |
| 20 | 云梦无限邮箱系统
多后缀无限邮箱号生成,接收邮箱邮件(可接受附件文件),批量邮箱接收邮件界面,自定义单接收邮件界面,自定义只有生成过或使用过的邮箱才能接收验证码界面
无限邮箱生成
https://ym-mail.ymmynb.com
单自定义邮箱接收验证码界面
https://ym-mail.ymmynb.com/ym
只有生成过的邮箱号才能接收邮件界面
https://ym-mail.ymmynb.com/mail-1
批量监控邮箱邮件界面
https://ym-mail.ymmynb.com/mail-2
APP版本下载地址
https://ym.czez.top/
联系: @ymmykj 咨询 | 194 |
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
