tempmail-sdk 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +162 -72
- package/demo/poll-emails.ts +25 -40
- package/dist/index.d.ts +2 -1
- package/dist/index.js +55 -4
- package/dist/normalize.d.ts +5 -0
- package/dist/normalize.js +87 -0
- package/dist/providers/awamail.d.ts +15 -0
- package/dist/providers/awamail.js +91 -0
- package/dist/providers/chatgpt-org-uk.js +4 -2
- package/dist/providers/dropmail.d.ts +13 -0
- package/dist/providers/dropmail.js +86 -0
- package/dist/providers/linshi-email.js +4 -2
- package/dist/providers/mail-tm.d.ts +11 -0
- package/dist/providers/mail-tm.js +167 -0
- package/dist/providers/temp-mail-io.d.ts +13 -0
- package/dist/providers/temp-mail-io.js +69 -0
- package/dist/providers/tempmail-la.d.ts +15 -0
- package/dist/providers/tempmail-la.js +89 -0
- package/dist/providers/tempmail-lol.d.ts +1 -1
- package/dist/providers/tempmail-lol.js +5 -3
- package/dist/providers/tempmail.js +4 -2
- package/dist/types.d.ts +31 -28
- package/dist/types.js +1 -1
- package/package.json +1 -1
- package/src/index.ts +54 -4
- package/src/normalize.ts +80 -0
- package/src/providers/awamail.ts +101 -0
- package/src/providers/chatgpt-org-uk.ts +3 -1
- package/src/providers/dropmail.ts +98 -0
- package/src/providers/linshi-email.ts +3 -1
- package/src/providers/mail-tm.ts +188 -0
- package/src/providers/temp-mail-io.ts +76 -0
- package/src/providers/tempmail-la.ts +99 -0
- package/src/providers/tempmail-lol.ts +4 -2
- package/src/providers/tempmail.ts +3 -1
- package/src/types.ts +32 -28
- package/test/example.ts +16 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateEmail = generateEmail;
|
|
4
|
+
exports.getEmails = getEmails;
|
|
5
|
+
const normalize_1 = require("../normalize");
|
|
6
|
+
const CHANNEL = 'temp-mail-io';
|
|
7
|
+
const BASE_URL = 'https://api.internal.temp-mail.io/api/v3';
|
|
8
|
+
const DEFAULT_HEADERS = {
|
|
9
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 Edg/144.0.0.0',
|
|
10
|
+
'Content-Type': 'application/json',
|
|
11
|
+
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
|
12
|
+
'application-name': 'web',
|
|
13
|
+
'application-version': '4.0.0',
|
|
14
|
+
'cache-control': 'no-cache',
|
|
15
|
+
'dnt': '1',
|
|
16
|
+
'origin': 'https://temp-mail.io',
|
|
17
|
+
'pragma': 'no-cache',
|
|
18
|
+
'referer': 'https://temp-mail.io/',
|
|
19
|
+
'sec-ch-ua': '"Not(A:Brand";v="8", "Chromium";v="144", "Microsoft Edge";v="144"',
|
|
20
|
+
'sec-ch-ua-mobile': '?0',
|
|
21
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
22
|
+
'sec-fetch-dest': 'empty',
|
|
23
|
+
'sec-fetch-mode': 'cors',
|
|
24
|
+
'sec-fetch-site': 'same-site',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* 创建临时邮箱
|
|
28
|
+
* API: POST /api/v3/email/new
|
|
29
|
+
* 返回: { email, token }
|
|
30
|
+
*/
|
|
31
|
+
async function generateEmail() {
|
|
32
|
+
const response = await fetch(`${BASE_URL}/email/new`, {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
headers: DEFAULT_HEADERS,
|
|
35
|
+
body: JSON.stringify({ min_name_length: 100, max_name_length: 100 }),
|
|
36
|
+
});
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
throw new Error(`Failed to generate email: ${response.status}`);
|
|
39
|
+
}
|
|
40
|
+
const data = await response.json();
|
|
41
|
+
if (!data.email || !data.token) {
|
|
42
|
+
throw new Error('Failed to generate email');
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
channel: CHANNEL,
|
|
46
|
+
email: data.email,
|
|
47
|
+
token: data.token,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 获取邮件列表
|
|
52
|
+
* API: GET /api/v3/email/{email}/messages
|
|
53
|
+
* 返回: [ { id, from, to, cc, subject, body_text, body_html, created_at, attachments } ]
|
|
54
|
+
*/
|
|
55
|
+
async function getEmails(email) {
|
|
56
|
+
const encodedEmail = encodeURIComponent(email);
|
|
57
|
+
const response = await fetch(`${BASE_URL}/email/${encodedEmail}/messages`, {
|
|
58
|
+
method: 'GET',
|
|
59
|
+
headers: DEFAULT_HEADERS,
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
throw new Error(`Failed to get emails: ${response.status}`);
|
|
63
|
+
}
|
|
64
|
+
const data = await response.json();
|
|
65
|
+
// API 直接返回邮件数组
|
|
66
|
+
const rawEmails = Array.isArray(data) ? data : [];
|
|
67
|
+
return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1tYWlsLWlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wLW1haWwtaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsc0NBc0JDO0FBT0QsOEJBZ0JDO0FBMUVELDRDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBWSxjQUFjLENBQUM7QUFDeEMsTUFBTSxRQUFRLEdBQUcsMENBQTBDLENBQUM7QUFFNUQsTUFBTSxlQUFlLEdBQTJCO0lBQzlDLFlBQVksRUFBRSwrSEFBK0g7SUFDN0ksY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxpQkFBaUIsRUFBRSxpREFBaUQ7SUFDcEUsa0JBQWtCLEVBQUUsS0FBSztJQUN6QixxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLEtBQUssRUFBRSxHQUFHO0lBQ1YsUUFBUSxFQUFFLHNCQUFzQjtJQUNoQyxRQUFRLEVBQUUsVUFBVTtJQUNwQixTQUFTLEVBQUUsdUJBQXVCO0lBQ2xDLFdBQVcsRUFBRSxtRUFBbUU7SUFDaEYsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixvQkFBb0IsRUFBRSxXQUFXO0lBQ2pDLGdCQUFnQixFQUFFLE9BQU87SUFDekIsZ0JBQWdCLEVBQUUsTUFBTTtJQUN4QixnQkFBZ0IsRUFBRSxXQUFXO0NBQzlCLENBQUM7QUFFRjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGFBQWE7SUFDakMsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLFlBQVksRUFBRTtRQUNwRCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDckUsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWE7SUFDM0MsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLFVBQVUsWUFBWSxXQUFXLEVBQUU7UUFDekUsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxlQUFlO0lBQ2YsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcC1tYWlsLWlvJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLmludGVybmFsLnRlbXAtbWFpbC5pby9hcGkvdjMnO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDQuMC4wLjAgU2FmYXJpLzUzNy4zNiBFZGcvMTQ0LjAuMC4wJyxcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgJ2FjY2VwdC1sYW5ndWFnZSc6ICd6aC1DTix6aDtxPTAuOSxlbjtxPTAuOCxlbi1HQjtxPTAuNyxlbi1VUztxPTAuNicsXG4gICdhcHBsaWNhdGlvbi1uYW1lJzogJ3dlYicsXG4gICdhcHBsaWNhdGlvbi12ZXJzaW9uJzogJzQuMC4wJyxcbiAgJ2NhY2hlLWNvbnRyb2wnOiAnbm8tY2FjaGUnLFxuICAnZG50JzogJzEnLFxuICAnb3JpZ2luJzogJ2h0dHBzOi8vdGVtcC1tYWlsLmlvJyxcbiAgJ3ByYWdtYSc6ICduby1jYWNoZScsXG4gICdyZWZlcmVyJzogJ2h0dHBzOi8vdGVtcC1tYWlsLmlvLycsXG4gICdzZWMtY2gtdWEnOiAnXCJOb3QoQTpCcmFuZFwiO3Y9XCI4XCIsIFwiQ2hyb21pdW1cIjt2PVwiMTQ0XCIsIFwiTWljcm9zb2Z0IEVkZ2VcIjt2PVwiMTQ0XCInLFxuICAnc2VjLWNoLXVhLW1vYmlsZSc6ICc/MCcsXG4gICdzZWMtY2gtdWEtcGxhdGZvcm0nOiAnXCJXaW5kb3dzXCInLFxuICAnc2VjLWZldGNoLWRlc3QnOiAnZW1wdHknLFxuICAnc2VjLWZldGNoLW1vZGUnOiAnY29ycycsXG4gICdzZWMtZmV0Y2gtc2l0ZSc6ICdzYW1lLXNpdGUnLFxufTtcblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqIEFQSTogUE9TVCAvYXBpL3YzL2VtYWlsL25ld1xuICog6L+U5ZueOiB7IGVtYWlsLCB0b2tlbiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKCk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlsL25ld2AsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBtaW5fbmFtZV9sZW5ndGg6IDEwMCwgbWF4X25hbWVfbGVuZ3RoOiAxMDAgfSksXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIGlmICghZGF0YS5lbWFpbCB8fCAhZGF0YS50b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IGRhdGEuZW1haWwsXG4gICAgdG9rZW46IGRhdGEudG9rZW4sXG4gIH07XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGoXG4gKiBBUEk6IEdFVCAvYXBpL3YzL2VtYWlsL3tlbWFpbH0vbWVzc2FnZXNcbiAqIOi/lOWbnjogWyB7IGlkLCBmcm9tLCB0bywgY2MsIHN1YmplY3QsIGJvZHlfdGV4dCwgYm9keV9odG1sLCBjcmVhdGVkX2F0LCBhdHRhY2htZW50cyB9IF1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGVuY29kZWRFbWFpbCA9IGVuY29kZVVSSUNvbXBvbmVudChlbWFpbCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlsLyR7ZW5jb2RlZEVtYWlsfS9tZXNzYWdlc2AsIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAvLyBBUEkg55u05o6l6L+U5Zue6YKu5Lu25pWw57uEXG4gIGNvbnN0IHJhd0VtYWlscyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW107XG4gIHJldHVybiByYXdFbWFpbHMubWFwKChyYXc6IGFueSkgPT4gbm9ybWFsaXplRW1haWwocmF3LCBlbWFpbCkpO1xufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EmailInfo, Email } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 创建临时邮箱
|
|
4
|
+
* API: POST /api/mail/create
|
|
5
|
+
* 返回: { code: 0, data: { mailId, address, type, startAt, endAt } }
|
|
6
|
+
*/
|
|
7
|
+
export declare function generateEmail(): Promise<EmailInfo>;
|
|
8
|
+
/**
|
|
9
|
+
* 获取邮件列表
|
|
10
|
+
* API: POST /api/mail/box
|
|
11
|
+
* 请求: { address, cursor }
|
|
12
|
+
* 返回: { code: 0, data: { rows: [...], cursor, hasMore } }
|
|
13
|
+
* 每封邮件: { mailboxId, messageFrom, subject, createdAt, html, attachments, read }
|
|
14
|
+
*/
|
|
15
|
+
export declare function getEmails(email: string): Promise<Email[]>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateEmail = generateEmail;
|
|
4
|
+
exports.getEmails = getEmails;
|
|
5
|
+
const normalize_1 = require("../normalize");
|
|
6
|
+
const CHANNEL = 'tempmail-la';
|
|
7
|
+
const BASE_URL = 'https://tempmail.la/api';
|
|
8
|
+
const DEFAULT_HEADERS = {
|
|
9
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 Edg/144.0.0.0',
|
|
10
|
+
'Accept': 'application/json, text/plain, */*',
|
|
11
|
+
'Content-Type': 'application/json',
|
|
12
|
+
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
|
13
|
+
'cache-control': 'no-cache',
|
|
14
|
+
'dnt': '1',
|
|
15
|
+
'locale': 'zh-CN',
|
|
16
|
+
'origin': 'https://tempmail.la',
|
|
17
|
+
'platform': 'PC',
|
|
18
|
+
'pragma': 'no-cache',
|
|
19
|
+
'product': 'TEMP_MAIL',
|
|
20
|
+
'referer': 'https://tempmail.la/zh-CN/tempmail',
|
|
21
|
+
'sec-ch-ua': '"Not(A:Brand";v="8", "Chromium";v="144", "Microsoft Edge";v="144"',
|
|
22
|
+
'sec-ch-ua-mobile': '?0',
|
|
23
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
24
|
+
'sec-fetch-dest': 'empty',
|
|
25
|
+
'sec-fetch-mode': 'cors',
|
|
26
|
+
'sec-fetch-site': 'same-origin',
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* 创建临时邮箱
|
|
30
|
+
* API: POST /api/mail/create
|
|
31
|
+
* 返回: { code: 0, data: { mailId, address, type, startAt, endAt } }
|
|
32
|
+
*/
|
|
33
|
+
async function generateEmail() {
|
|
34
|
+
const response = await fetch(`${BASE_URL}/mail/create`, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
headers: DEFAULT_HEADERS,
|
|
37
|
+
body: JSON.stringify({ turnstile: '' }),
|
|
38
|
+
});
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
throw new Error(`Failed to generate email: ${response.status}`);
|
|
41
|
+
}
|
|
42
|
+
const data = await response.json();
|
|
43
|
+
if (data.code !== 0 || !data.data) {
|
|
44
|
+
throw new Error('Failed to generate email');
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
channel: CHANNEL,
|
|
48
|
+
email: data.data.address,
|
|
49
|
+
expiresAt: data.data.endAt,
|
|
50
|
+
createdAt: data.data.startAt,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 获取邮件列表
|
|
55
|
+
* API: POST /api/mail/box
|
|
56
|
+
* 请求: { address, cursor }
|
|
57
|
+
* 返回: { code: 0, data: { rows: [...], cursor, hasMore } }
|
|
58
|
+
* 每封邮件: { mailboxId, messageFrom, subject, createdAt, html, attachments, read }
|
|
59
|
+
*/
|
|
60
|
+
async function getEmails(email) {
|
|
61
|
+
const allEmails = [];
|
|
62
|
+
let cursor = null;
|
|
63
|
+
let hasMore = true;
|
|
64
|
+
// 支持分页,循环获取所有邮件
|
|
65
|
+
while (hasMore) {
|
|
66
|
+
const response = await fetch(`${BASE_URL}/mail/box`, {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
headers: DEFAULT_HEADERS,
|
|
69
|
+
body: JSON.stringify({ address: email, cursor }),
|
|
70
|
+
});
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
throw new Error(`Failed to get emails: ${response.status}`);
|
|
73
|
+
}
|
|
74
|
+
const data = await response.json();
|
|
75
|
+
if (data.code !== 0 || !data.data) {
|
|
76
|
+
throw new Error('Failed to get emails');
|
|
77
|
+
}
|
|
78
|
+
const rows = data.data.rows || [];
|
|
79
|
+
allEmails.push(...rows);
|
|
80
|
+
if (data.data.hasMore && data.data.cursor) {
|
|
81
|
+
cursor = data.data.cursor;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
hasMore = false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return allEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwtbGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RlbXBtYWlsLWxhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0NBLHNDQXVCQztBQVNELDhCQWtDQztBQWpHRCw0Q0FBOEM7QUFFOUMsTUFBTSxPQUFPLEdBQVksYUFBYSxDQUFDO0FBQ3ZDLE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDO0FBRTNDLE1BQU0sZUFBZSxHQUEyQjtJQUM5QyxZQUFZLEVBQUUsK0hBQStIO0lBQzdJLFFBQVEsRUFBRSxtQ0FBbUM7SUFDN0MsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxpQkFBaUIsRUFBRSxpREFBaUQ7SUFDcEUsZUFBZSxFQUFFLFVBQVU7SUFDM0IsS0FBSyxFQUFFLEdBQUc7SUFDVixRQUFRLEVBQUUsT0FBTztJQUNqQixRQUFRLEVBQUUscUJBQXFCO0lBQy9CLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxvQ0FBb0M7SUFDL0MsV0FBVyxFQUFFLG1FQUFtRTtJQUNoRixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLFdBQVc7SUFDakMsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixnQkFBZ0IsRUFBRSxNQUFNO0lBQ3hCLGdCQUFnQixFQUFFLGFBQWE7Q0FDaEMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsY0FBYyxFQUFFO1FBQ3RELE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLGVBQWU7UUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDeEMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1FBQ3hCLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7UUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztLQUM3QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDNUIsSUFBSSxNQUFNLEdBQWtCLElBQUksQ0FBQztJQUNqQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFbkIsZ0JBQWdCO0lBQ2hCLE9BQU8sT0FBTyxFQUFFLENBQUM7UUFDZixNQUFNLFFBQVEsR0FBYSxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsV0FBVyxFQUFFO1lBQzdELE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQ2pELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFRLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcG1haWwtbGEnO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly90ZW1wbWFpbC5sYS9hcGknO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDQuMC4wLjAgU2FmYXJpLzUzNy4zNiBFZGcvMTQ0LjAuMC4wJyxcbiAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonLFxuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAnYWNjZXB0LWxhbmd1YWdlJzogJ3poLUNOLHpoO3E9MC45LGVuO3E9MC44LGVuLUdCO3E9MC43LGVuLVVTO3E9MC42JyxcbiAgJ2NhY2hlLWNvbnRyb2wnOiAnbm8tY2FjaGUnLFxuICAnZG50JzogJzEnLFxuICAnbG9jYWxlJzogJ3poLUNOJyxcbiAgJ29yaWdpbic6ICdodHRwczovL3RlbXBtYWlsLmxhJyxcbiAgJ3BsYXRmb3JtJzogJ1BDJyxcbiAgJ3ByYWdtYSc6ICduby1jYWNoZScsXG4gICdwcm9kdWN0JzogJ1RFTVBfTUFJTCcsXG4gICdyZWZlcmVyJzogJ2h0dHBzOi8vdGVtcG1haWwubGEvemgtQ04vdGVtcG1haWwnLFxuICAnc2VjLWNoLXVhJzogJ1wiTm90KEE6QnJhbmRcIjt2PVwiOFwiLCBcIkNocm9taXVtXCI7dj1cIjE0NFwiLCBcIk1pY3Jvc29mdCBFZGdlXCI7dj1cIjE0NFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ3NlYy1mZXRjaC1kZXN0JzogJ2VtcHR5JyxcbiAgJ3NlYy1mZXRjaC1tb2RlJzogJ2NvcnMnLFxuICAnc2VjLWZldGNoLXNpdGUnOiAnc2FtZS1vcmlnaW4nLFxufTtcblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqIEFQSTogUE9TVCAvYXBpL21haWwvY3JlYXRlXG4gKiDov5Tlm546IHsgY29kZTogMCwgZGF0YTogeyBtYWlsSWQsIGFkZHJlc3MsIHR5cGUsIHN0YXJ0QXQsIGVuZEF0IH0gfVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbCgpOiBQcm9taXNlPEVtYWlsSW5mbz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9tYWlsL2NyZWF0ZWAsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB0dXJuc3RpbGU6ICcnIH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWw6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICBpZiAoZGF0YS5jb2RlICE9PSAwIHx8ICFkYXRhLmRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbCcpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFubmVsOiBDSEFOTkVMLFxuICAgIGVtYWlsOiBkYXRhLmRhdGEuYWRkcmVzcyxcbiAgICBleHBpcmVzQXQ6IGRhdGEuZGF0YS5lbmRBdCxcbiAgICBjcmVhdGVkQXQ6IGRhdGEuZGF0YS5zdGFydEF0LFxuICB9O1xufVxuXG4vKipcbiAqIOiOt+WPlumCruS7tuWIl+ihqFxuICogQVBJOiBQT1NUIC9hcGkvbWFpbC9ib3hcbiAqIOivt+axgjogeyBhZGRyZXNzLCBjdXJzb3IgfVxuICog6L+U5ZueOiB7IGNvZGU6IDAsIGRhdGE6IHsgcm93czogWy4uLl0sIGN1cnNvciwgaGFzTW9yZSB9IH1cbiAqIOavj+WwgemCruS7tjogeyBtYWlsYm94SWQsIG1lc3NhZ2VGcm9tLCBzdWJqZWN0LCBjcmVhdGVkQXQsIGh0bWwsIGF0dGFjaG1lbnRzLCByZWFkIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGFsbEVtYWlsczogYW55W10gPSBbXTtcbiAgbGV0IGN1cnNvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCBoYXNNb3JlID0gdHJ1ZTtcblxuICAvLyDmlK/mjIHliIbpobXvvIzlvqrnjq/ojrflj5bmiYDmnInpgq7ku7ZcbiAgd2hpbGUgKGhhc01vcmUpIHtcbiAgICBjb25zdCByZXNwb25zZTogUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vbWFpbC9ib3hgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgYWRkcmVzczogZW1haWwsIGN1cnNvciB9KSxcbiAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGE6IGFueSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgIGlmIChkYXRhLmNvZGUgIT09IDAgfHwgIWRhdGEuZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IGVtYWlscycpO1xuICAgIH1cblxuICAgIGNvbnN0IHJvd3MgPSBkYXRhLmRhdGEucm93cyB8fCBbXTtcbiAgICBhbGxFbWFpbHMucHVzaCguLi5yb3dzKTtcblxuICAgIGlmIChkYXRhLmRhdGEuaGFzTW9yZSAmJiBkYXRhLmRhdGEuY3Vyc29yKSB7XG4gICAgICBjdXJzb3IgPSBkYXRhLmRhdGEuY3Vyc29yO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYXNNb3JlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbEVtYWlscy5tYXAoKHJhdzogYW55KSA9PiBub3JtYWxpemVFbWFpbChyYXcsIGVtYWlsKSk7XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { EmailInfo, Email } from '../types';
|
|
2
2
|
export declare function generateEmail(domain?: string | null): Promise<EmailInfo>;
|
|
3
|
-
export declare function getEmails(token: string): Promise<Email[]>;
|
|
3
|
+
export declare function getEmails(token: string, recipientEmail?: string): Promise<Email[]>;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateEmail = generateEmail;
|
|
4
4
|
exports.getEmails = getEmails;
|
|
5
|
+
const normalize_1 = require("../normalize");
|
|
5
6
|
const CHANNEL = 'tempmail-lol';
|
|
6
7
|
const BASE_URL = 'https://api.tempmail.lol/v2';
|
|
7
8
|
const DEFAULT_HEADERS = {
|
|
@@ -32,7 +33,7 @@ async function generateEmail(domain = null) {
|
|
|
32
33
|
token: data.token,
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
|
-
async function getEmails(token) {
|
|
36
|
+
async function getEmails(token, recipientEmail = '') {
|
|
36
37
|
const response = await fetch(`${BASE_URL}/inbox?token=${encodeURIComponent(token)}`, {
|
|
37
38
|
method: 'GET',
|
|
38
39
|
headers: DEFAULT_HEADERS,
|
|
@@ -41,6 +42,7 @@ async function getEmails(token) {
|
|
|
41
42
|
throw new Error(`Failed to get emails: ${response.status}`);
|
|
42
43
|
}
|
|
43
44
|
const data = await response.json();
|
|
44
|
-
|
|
45
|
+
const rawEmails = data.emails || [];
|
|
46
|
+
return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, recipientEmail));
|
|
45
47
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwtbG9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbC1sb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsc0NBc0JDO0FBRUQsOEJBY0M7QUFyREQsNENBQThDO0FBRTlDLE1BQU0sT0FBTyxHQUFZLGNBQWMsQ0FBQztBQUN4QyxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztBQUUvQyxNQUFNLGVBQWUsR0FBRztJQUN0QixZQUFZLEVBQUUsaUhBQWlIO0lBQy9ILGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsUUFBUSxFQUFFLHNCQUFzQjtJQUNoQyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFSyxLQUFLLFVBQVUsYUFBYSxDQUFDLFNBQXdCLElBQUk7SUFDOUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLGVBQWUsRUFBRTtRQUN2RCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUNoRCxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFhLEVBQUUsaUJBQXlCLEVBQUU7SUFDeEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLGdCQUFnQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ25GLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDcEMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndGVtcG1haWwtbG9sJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLnRlbXBtYWlsLmxvbC92Mic7XG5cbmNvbnN0IERFRkFVTFRfSEVBREVSUyA9IHtcbiAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0My4wLjAuMCBTYWZhcmkvNTM3LjM2JyxcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgJ09yaWdpbic6ICdodHRwczovL3RlbXBtYWlsLmxvbCcsXG4gICdzZWMtY2gtdWEnOiAnXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDNcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDNcIiwgXCJOb3QgQShCcmFuZFwiO3Y9XCIyNFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ0ROVCc6ICcxJyxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGRvbWFpbjogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBQcm9taXNlPEVtYWlsSW5mbz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9pbmJveC9jcmVhdGVgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZG9tYWluLCBjYXB0Y2hhOiBudWxsIH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWw6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gIGlmICghZGF0YS5hZGRyZXNzIHx8ICFkYXRhLnRva2VuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogZGF0YS5hZGRyZXNzLFxuICAgIHRva2VuOiBkYXRhLnRva2VuLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKHRva2VuOiBzdHJpbmcsIHJlY2lwaWVudEVtYWlsOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8RW1haWxbXT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9pbmJveD90b2tlbj0ke2VuY29kZVVSSUNvbXBvbmVudCh0b2tlbil9YCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IGVtYWlsczogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICBcbiAgY29uc3QgcmF3RW1haWxzID0gZGF0YS5lbWFpbHMgfHwgW107XG4gIHJldHVybiByYXdFbWFpbHMubWFwKChyYXc6IGFueSkgPT4gbm9ybWFsaXplRW1haWwocmF3LCByZWNpcGllbnRFbWFpbCkpO1xufVxuIl19
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateEmail = generateEmail;
|
|
4
4
|
exports.getEmails = getEmails;
|
|
5
|
+
const normalize_1 = require("../normalize");
|
|
5
6
|
const CHANNEL = 'tempmail';
|
|
6
7
|
const BASE_URL = 'https://api.tempmail.ing/api';
|
|
7
8
|
const DEFAULT_HEADERS = {
|
|
@@ -46,6 +47,7 @@ async function getEmails(email) {
|
|
|
46
47
|
if (!data.success) {
|
|
47
48
|
throw new Error('Failed to get emails');
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
+
const rawEmails = data.emails || [];
|
|
51
|
+
return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
|
|
50
52
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RlbXBtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0JBLHNDQXVCQztBQUVELDhCQW1CQztBQTNERCw0Q0FBOEM7QUFFOUMsTUFBTSxPQUFPLEdBQVksVUFBVSxDQUFDO0FBQ3BDLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDO0FBRWhELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFlBQVksRUFBRSxpSEFBaUg7SUFDL0gsY0FBYyxFQUFFLGtCQUFrQjtJQUNsQyxTQUFTLEVBQUUsdUJBQXVCO0lBQ2xDLFdBQVcsRUFBRSxvRUFBb0U7SUFDakYsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixvQkFBb0IsRUFBRSxXQUFXO0lBQ2pDLEtBQUssRUFBRSxHQUFHO0NBQ1gsQ0FBQztBQUVLLEtBQUssVUFBVSxhQUFhLENBQUMsV0FBbUIsRUFBRTtJQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsV0FBVyxFQUFFO1FBQ25ELE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLGVBQWU7UUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztLQUNuQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87UUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztRQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFhO0lBQzNDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxXQUFXLFlBQVksRUFBRSxFQUFFO1FBQ2pFLE1BQU0sRUFBRSxLQUFLO1FBQ2IsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3BDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBQSwwQkFBYyxFQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplRW1haWwgfSBmcm9tICcuLi9ub3JtYWxpemUnO1xuXG5jb25zdCBDSEFOTkVMOiBDaGFubmVsID0gJ3RlbXBtYWlsJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLnRlbXBtYWlsLmluZy9hcGknO1xuXG5jb25zdCBERUZBVUxUX0hFQURFUlMgPSB7XG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDMuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICdSZWZlcmVyJzogJ2h0dHBzOi8vdGVtcG1haWwuaW5nLycsXG4gICdzZWMtY2gtdWEnOiAnXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDNcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDNcIiwgXCJOb3QgQShCcmFuZFwiO3Y9XCIyNFwiJyxcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxuICAnc2VjLWNoLXVhLXBsYXRmb3JtJzogJ1wiV2luZG93c1wiJyxcbiAgJ0ROVCc6ICcxJyxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGR1cmF0aW9uOiBudW1iZXIgPSAzMCk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2dlbmVyYXRlYCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGR1cmF0aW9uIH0pLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWw6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gIGlmICghZGF0YS5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogZGF0YS5lbWFpbC5hZGRyZXNzLFxuICAgIGV4cGlyZXNBdDogZGF0YS5lbWFpbC5leHBpcmVzQXQsXG4gICAgY3JlYXRlZEF0OiBkYXRhLmVtYWlsLmNyZWF0ZWRBdCxcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IGVuY29kZWRFbWFpbCA9IGVuY29kZVVSSUNvbXBvbmVudChlbWFpbCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlscy8ke2VuY29kZWRFbWFpbH1gLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgZW1haWxzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gIFxuICBpZiAoIWRhdGEuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdldCBlbWFpbHMnKTtcbiAgfVxuXG4gIGNvbnN0IHJhd0VtYWlscyA9IGRhdGEuZW1haWxzIHx8IFtdO1xuICByZXR1cm4gcmF3RW1haWxzLm1hcCgocmF3OiBhbnkpID0+IG5vcm1hbGl6ZUVtYWlsKHJhdywgZW1haWwpKTtcbn1cbiJdfQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type Channel = 'tempmail' | 'linshi-email' | 'tempmail-lol' | 'chatgpt-org-uk';
|
|
1
|
+
export type Channel = 'tempmail' | 'linshi-email' | 'tempmail-lol' | 'chatgpt-org-uk' | 'tempmail-la' | 'temp-mail-io' | 'awamail' | 'mail-tm' | 'dropmail';
|
|
2
2
|
export interface EmailInfo {
|
|
3
3
|
channel: Channel;
|
|
4
4
|
email: string;
|
|
@@ -6,34 +6,37 @@ export interface EmailInfo {
|
|
|
6
6
|
expiresAt?: string | number;
|
|
7
7
|
createdAt?: string;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* 标准化邮件附件
|
|
11
|
+
*/
|
|
12
|
+
export interface EmailAttachment {
|
|
13
|
+
filename: string;
|
|
14
|
+
size?: number;
|
|
15
|
+
contentType?: string;
|
|
16
|
+
url?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 标准化邮件格式 - 所有提供商返回统一结构
|
|
20
|
+
*/
|
|
9
21
|
export interface Email {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
from
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
date?: string | number;
|
|
29
|
-
e_date?: number;
|
|
30
|
-
timestamp?: number;
|
|
31
|
-
received_at?: string;
|
|
32
|
-
created_at?: string;
|
|
33
|
-
createdAt?: string;
|
|
34
|
-
is_read?: number;
|
|
35
|
-
has_html?: boolean;
|
|
36
|
-
[key: string]: any;
|
|
22
|
+
/** 邮件唯一标识 */
|
|
23
|
+
id: string;
|
|
24
|
+
/** 发件人邮箱地址 */
|
|
25
|
+
from: string;
|
|
26
|
+
/** 收件人邮箱地址 */
|
|
27
|
+
to: string;
|
|
28
|
+
/** 邮件主题 */
|
|
29
|
+
subject: string;
|
|
30
|
+
/** 纯文本内容 */
|
|
31
|
+
text: string;
|
|
32
|
+
/** HTML 内容 */
|
|
33
|
+
html: string;
|
|
34
|
+
/** ISO 8601 格式的日期字符串 */
|
|
35
|
+
date: string;
|
|
36
|
+
/** 是否已读 */
|
|
37
|
+
isRead: boolean;
|
|
38
|
+
/** 附件列表 */
|
|
39
|
+
attachments: EmailAttachment[];
|
|
37
40
|
}
|
|
38
41
|
export interface GetEmailsResult {
|
|
39
42
|
channel: Channel;
|
package/dist/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENoYW5uZWwgPSAndGVtcG1haWwnIHwgJ2xpbnNoaS1lbWFpbCcgfCAndGVtcG1haWwtbG9sJyB8ICdjaGF0Z3B0LW9yZy11aycgfCAndGVtcG1haWwtbGEnIHwgJ3RlbXAtbWFpbC1pbycgfCAnYXdhbWFpbCcgfCAnbWFpbC10bScgfCAnZHJvcG1haWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsSW5mbyB7XG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHRva2VuPzogc3RyaW5nO1xuICBleHBpcmVzQXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiDmoIflh4bljJbpgq7ku7bpmYTku7ZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWFpbEF0dGFjaG1lbnQge1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICBzaXplPzogbnVtYmVyO1xuICBjb250ZW50VHlwZT86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIOagh+WHhuWMlumCruS7tuagvOW8jyAtIOaJgOacieaPkOS+m+WVhui/lOWbnue7n+S4gOe7k+aehFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsIHtcbiAgLyoqIOmCruS7tuWUr+S4gOagh+ivhiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiog5Y+R5Lu25Lq66YKu566x5Zyw5Z2AICovXG4gIGZyb206IHN0cmluZztcbiAgLyoqIOaUtuS7tuS6uumCrueuseWcsOWdgCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiog6YKu5Lu25Li76aKYICovXG4gIHN1YmplY3Q6IHN0cmluZztcbiAgLyoqIOe6r+aWh+acrOWGheWuuSAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBIVE1MIOWGheWuuSAqL1xuICBodG1sOiBzdHJpbmc7XG4gIC8qKiBJU08gODYwMSDmoLzlvI/nmoTml6XmnJ/lrZfnrKbkuLIgKi9cbiAgZGF0ZTogc3RyaW5nO1xuICAvKiog5piv5ZCm5bey6K+7ICovXG4gIGlzUmVhZDogYm9vbGVhbjtcbiAgLyoqIOmZhOS7tuWIl+ihqCAqL1xuICBhdHRhY2htZW50czogRW1haWxBdHRhY2htZW50W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW1haWxzUmVzdWx0IHtcbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgZW1haWw6IHN0cmluZztcbiAgZW1haWxzOiBFbWFpbFtdO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlRW1haWxPcHRpb25zIHtcbiAgY2hhbm5lbD86IENoYW5uZWw7XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBkb21haW4/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEVtYWlsc09wdGlvbnMge1xuICBjaGFubmVsOiBDaGFubmVsO1xuICBlbWFpbDogc3RyaW5nO1xuICB0b2tlbj86IHN0cmluZztcbn1cbiJdfQ==
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -2,18 +2,29 @@ import * as tempmail from './providers/tempmail';
|
|
|
2
2
|
import * as linshiEmail from './providers/linshi-email';
|
|
3
3
|
import * as tempmailLol from './providers/tempmail-lol';
|
|
4
4
|
import * as chatgptOrgUk from './providers/chatgpt-org-uk';
|
|
5
|
-
import
|
|
5
|
+
import * as tempmailLa from './providers/tempmail-la';
|
|
6
|
+
import * as tempMailIO from './providers/temp-mail-io';
|
|
7
|
+
import * as awamail from './providers/awamail';
|
|
8
|
+
import * as mailTm from './providers/mail-tm';
|
|
9
|
+
import * as dropmail from './providers/dropmail';
|
|
10
|
+
import { Channel, EmailInfo, Email, EmailAttachment, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
|
|
6
11
|
|
|
7
|
-
export { Channel, EmailInfo, Email, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
|
|
12
|
+
export { Channel, EmailInfo, Email, EmailAttachment, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
|
|
13
|
+
export { normalizeEmail } from './normalize';
|
|
8
14
|
|
|
9
15
|
const providers = {
|
|
10
16
|
'tempmail': tempmail,
|
|
11
17
|
'linshi-email': linshiEmail,
|
|
12
18
|
'tempmail-lol': tempmailLol,
|
|
13
19
|
'chatgpt-org-uk': chatgptOrgUk,
|
|
20
|
+
'tempmail-la': tempmailLa,
|
|
21
|
+
'temp-mail-io': tempMailIO,
|
|
22
|
+
'awamail': awamail,
|
|
23
|
+
'mail-tm': mailTm,
|
|
24
|
+
'dropmail': dropmail,
|
|
14
25
|
};
|
|
15
26
|
|
|
16
|
-
const allChannels: Channel[] = ['tempmail', 'linshi-email', 'tempmail-lol', 'chatgpt-org-uk'];
|
|
27
|
+
const allChannels: Channel[] = ['tempmail', 'linshi-email', 'tempmail-lol', 'chatgpt-org-uk', 'tempmail-la', 'temp-mail-io', 'awamail', 'mail-tm', 'dropmail'];
|
|
17
28
|
|
|
18
29
|
export interface ChannelInfo {
|
|
19
30
|
channel: Channel;
|
|
@@ -26,6 +37,11 @@ const channelInfoMap: Record<Channel, ChannelInfo> = {
|
|
|
26
37
|
'linshi-email': { channel: 'linshi-email', name: '临时邮箱', website: 'linshi-email.com' },
|
|
27
38
|
'tempmail-lol': { channel: 'tempmail-lol', name: 'TempMail LOL', website: 'tempmail.lol' },
|
|
28
39
|
'chatgpt-org-uk': { channel: 'chatgpt-org-uk', name: 'ChatGPT Mail', website: 'mail.chatgpt.org.uk' },
|
|
40
|
+
'tempmail-la': { channel: 'tempmail-la', name: 'TempMail LA', website: 'tempmail.la' },
|
|
41
|
+
'temp-mail-io': { channel: 'temp-mail-io', name: 'Temp Mail IO', website: 'temp-mail.io' },
|
|
42
|
+
'awamail': { channel: 'awamail', name: 'AwaMail', website: 'awamail.com' },
|
|
43
|
+
'mail-tm': { channel: 'mail-tm', name: 'Mail.tm', website: 'mail.tm' },
|
|
44
|
+
'dropmail': { channel: 'dropmail', name: 'DropMail', website: 'dropmail.me' },
|
|
29
45
|
};
|
|
30
46
|
|
|
31
47
|
/**
|
|
@@ -54,6 +70,16 @@ export async function generateEmail(options: GenerateEmailOptions = {}): Promise
|
|
|
54
70
|
return tempmailLol.generateEmail(options.domain || null);
|
|
55
71
|
case 'chatgpt-org-uk':
|
|
56
72
|
return chatgptOrgUk.generateEmail();
|
|
73
|
+
case 'tempmail-la':
|
|
74
|
+
return tempmailLa.generateEmail();
|
|
75
|
+
case 'temp-mail-io':
|
|
76
|
+
return tempMailIO.generateEmail();
|
|
77
|
+
case 'awamail':
|
|
78
|
+
return awamail.generateEmail();
|
|
79
|
+
case 'mail-tm':
|
|
80
|
+
return mailTm.generateEmail();
|
|
81
|
+
case 'dropmail':
|
|
82
|
+
return dropmail.generateEmail();
|
|
57
83
|
default:
|
|
58
84
|
throw new Error(`Unknown channel: ${channel}`);
|
|
59
85
|
}
|
|
@@ -82,11 +108,35 @@ export async function getEmails(options: GetEmailsOptions): Promise<GetEmailsRes
|
|
|
82
108
|
if (!token) {
|
|
83
109
|
throw new Error('Token is required for tempmail-lol channel');
|
|
84
110
|
}
|
|
85
|
-
emails = await tempmailLol.getEmails(token);
|
|
111
|
+
emails = await tempmailLol.getEmails(token, email);
|
|
86
112
|
break;
|
|
87
113
|
case 'chatgpt-org-uk':
|
|
88
114
|
emails = await chatgptOrgUk.getEmails(email);
|
|
89
115
|
break;
|
|
116
|
+
case 'tempmail-la':
|
|
117
|
+
emails = await tempmailLa.getEmails(email);
|
|
118
|
+
break;
|
|
119
|
+
case 'temp-mail-io':
|
|
120
|
+
emails = await tempMailIO.getEmails(email);
|
|
121
|
+
break;
|
|
122
|
+
case 'awamail':
|
|
123
|
+
if (!token) {
|
|
124
|
+
throw new Error('Token is required for awamail channel');
|
|
125
|
+
}
|
|
126
|
+
emails = await awamail.getEmails(token, email);
|
|
127
|
+
break;
|
|
128
|
+
case 'mail-tm':
|
|
129
|
+
if (!token) {
|
|
130
|
+
throw new Error('Token is required for mail-tm channel');
|
|
131
|
+
}
|
|
132
|
+
emails = await mailTm.getEmails(token, email);
|
|
133
|
+
break;
|
|
134
|
+
case 'dropmail':
|
|
135
|
+
if (!token) {
|
|
136
|
+
throw new Error('Token is required for dropmail channel');
|
|
137
|
+
}
|
|
138
|
+
emails = await dropmail.getEmails(token, email);
|
|
139
|
+
break;
|
|
90
140
|
default:
|
|
91
141
|
throw new Error(`Unknown channel: ${channel}`);
|
|
92
142
|
}
|
package/src/normalize.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Email, EmailAttachment } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 将各提供商返回的原始邮件数据标准化为统一的 Email 格式
|
|
5
|
+
*/
|
|
6
|
+
export function normalizeEmail(raw: any, recipientEmail: string = ''): Email {
|
|
7
|
+
return {
|
|
8
|
+
id: normalizeId(raw),
|
|
9
|
+
from: normalizeFrom(raw),
|
|
10
|
+
to: normalizeTo(raw, recipientEmail),
|
|
11
|
+
subject: normalizeSubject(raw),
|
|
12
|
+
text: normalizeText(raw),
|
|
13
|
+
html: normalizeHtml(raw),
|
|
14
|
+
date: normalizeDate(raw),
|
|
15
|
+
isRead: normalizeIsRead(raw),
|
|
16
|
+
attachments: normalizeAttachments(raw.attachments),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function normalizeId(raw: any): string {
|
|
21
|
+
const id = raw.id ?? raw.eid ?? raw._id ?? raw.mailboxId ?? raw.messageId ?? raw.mail_id ?? '';
|
|
22
|
+
return String(id);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function normalizeFrom(raw: any): string {
|
|
26
|
+
return raw.from_address || raw.address_from || raw.from || raw.messageFrom || raw.sender || '';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function normalizeTo(raw: any, recipientEmail: string): string {
|
|
30
|
+
return raw.to || raw.to_address || raw.name_to || raw.email_address || raw.address || recipientEmail || '';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function normalizeSubject(raw: any): string {
|
|
34
|
+
return raw.subject || raw.e_subject || '';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function normalizeText(raw: any): string {
|
|
38
|
+
return raw.text || raw.body || raw.content || raw.body_text || raw.text_content || '';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function normalizeHtml(raw: any): string {
|
|
42
|
+
return raw.html || raw.html_content || raw.body_html || '';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function normalizeDate(raw: any): string {
|
|
46
|
+
try {
|
|
47
|
+
if (raw.received_at) return new Date(raw.received_at).toISOString();
|
|
48
|
+
if (raw.created_at) return new Date(raw.created_at).toISOString();
|
|
49
|
+
if (raw.createdAt) return new Date(raw.createdAt).toISOString();
|
|
50
|
+
if (raw.date) {
|
|
51
|
+
if (typeof raw.date === 'number') return new Date(raw.date).toISOString();
|
|
52
|
+
return new Date(raw.date).toISOString();
|
|
53
|
+
}
|
|
54
|
+
if (raw.timestamp) return new Date(raw.timestamp * 1000).toISOString();
|
|
55
|
+
if (raw.e_date) return new Date(raw.e_date).toISOString();
|
|
56
|
+
} catch {
|
|
57
|
+
// 日期解析失败,返回空字符串
|
|
58
|
+
}
|
|
59
|
+
return '';
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function normalizeIsRead(raw: any): boolean {
|
|
63
|
+
if (typeof raw.seen === 'boolean') return raw.seen;
|
|
64
|
+
if (typeof raw.read === 'boolean') return raw.read;
|
|
65
|
+
if (typeof raw.isRead === 'boolean') return raw.isRead;
|
|
66
|
+
if (typeof raw.is_read === 'number') return raw.is_read === 1;
|
|
67
|
+
if (typeof raw.is_read === 'string') return raw.is_read === '1';
|
|
68
|
+
if (typeof raw.is_read === 'boolean') return raw.is_read;
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function normalizeAttachments(attachments: any): EmailAttachment[] {
|
|
73
|
+
if (!attachments || !Array.isArray(attachments)) return [];
|
|
74
|
+
return attachments.map((a: any) => ({
|
|
75
|
+
filename: a.filename || a.name || '',
|
|
76
|
+
size: a.size || a.filesize || undefined,
|
|
77
|
+
contentType: a.contentType || a.content_type || a.mimeType || a.mime_type || undefined,
|
|
78
|
+
url: a.url || a.download_url || a.downloadUrl || undefined,
|
|
79
|
+
}));
|
|
80
|
+
}
|