tempmail-sdk 1.0.0
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 +153 -0
- package/demo/poll-emails.ts +187 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +150 -0
- package/dist/providers/chatgpt-org-uk.d.ts +3 -0
- package/dist/providers/chatgpt-org-uk.js +49 -0
- package/dist/providers/linshi-email.d.ts +3 -0
- package/dist/providers/linshi-email.js +53 -0
- package/dist/providers/tempmail-lol.d.ts +3 -0
- package/dist/providers/tempmail-lol.js +46 -0
- package/dist/providers/tempmail.d.ts +3 -0
- package/dist/providers/tempmail.js +51 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.js +3 -0
- package/package.json +37 -0
- package/src/global.d.ts +5 -0
- package/src/index.ts +133 -0
- package/src/providers/chatgpt-org-uk.ts +57 -0
- package/src/providers/linshi-email.ts +61 -0
- package/src/providers/tempmail-lol.ts +53 -0
- package/src/providers/tempmail.ts +59 -0
- package/src/types.ts +58 -0
- package/test/example.ts +48 -0
- package/tsconfig.json +27 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateEmail = generateEmail;
|
|
4
|
+
exports.getEmails = getEmails;
|
|
5
|
+
const CHANNEL = 'tempmail-lol';
|
|
6
|
+
const BASE_URL = 'https://api.tempmail.lol/v2';
|
|
7
|
+
const DEFAULT_HEADERS = {
|
|
8
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36',
|
|
9
|
+
'Content-Type': 'application/json',
|
|
10
|
+
'Origin': 'https://tempmail.lol',
|
|
11
|
+
'sec-ch-ua': '"Microsoft Edge";v="143", "Chromium";v="143", "Not A(Brand";v="24"',
|
|
12
|
+
'sec-ch-ua-mobile': '?0',
|
|
13
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
14
|
+
'DNT': '1',
|
|
15
|
+
};
|
|
16
|
+
async function generateEmail(domain = null) {
|
|
17
|
+
const response = await fetch(`${BASE_URL}/inbox/create`, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers: DEFAULT_HEADERS,
|
|
20
|
+
body: JSON.stringify({ domain, captcha: null }),
|
|
21
|
+
});
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
throw new Error(`Failed to generate email: ${response.status}`);
|
|
24
|
+
}
|
|
25
|
+
const data = await response.json();
|
|
26
|
+
if (!data.address || !data.token) {
|
|
27
|
+
throw new Error('Failed to generate email');
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
channel: CHANNEL,
|
|
31
|
+
email: data.address,
|
|
32
|
+
token: data.token,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async function getEmails(token) {
|
|
36
|
+
const response = await fetch(`${BASE_URL}/inbox?token=${encodeURIComponent(token)}`, {
|
|
37
|
+
method: 'GET',
|
|
38
|
+
headers: DEFAULT_HEADERS,
|
|
39
|
+
});
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new Error(`Failed to get emails: ${response.status}`);
|
|
42
|
+
}
|
|
43
|
+
const data = await response.json();
|
|
44
|
+
return data.emails || [];
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwtbG9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbC1sb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFlQSxzQ0FzQkM7QUFFRCw4QkFhQztBQWxERCxNQUFNLE9BQU8sR0FBWSxjQUFjLENBQUM7QUFDeEMsTUFBTSxRQUFRLEdBQUcsNkJBQTZCLENBQUM7QUFFL0MsTUFBTSxlQUFlLEdBQUc7SUFDdEIsWUFBWSxFQUFFLGlIQUFpSDtJQUMvSCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLFFBQVEsRUFBRSxzQkFBc0I7SUFDaEMsV0FBVyxFQUFFLG9FQUFvRTtJQUNqRixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLFdBQVc7SUFDakMsS0FBSyxFQUFFLEdBQUc7Q0FDWCxDQUFDO0FBRUssS0FBSyxVQUFVLGFBQWEsQ0FBQyxTQUF3QixJQUFJO0lBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxlQUFlLEVBQUU7UUFDdkQsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsZUFBZTtRQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDaEQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsZ0JBQWdCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDbkYsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5cclxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICd0ZW1wbWFpbC1sb2wnO1xyXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL2FwaS50ZW1wbWFpbC5sb2wvdjInO1xyXG5cclxuY29uc3QgREVGQVVMVF9IRUFERVJTID0ge1xyXG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDMuMC4wLjAgU2FmYXJpLzUzNy4zNicsXHJcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAnT3JpZ2luJzogJ2h0dHBzOi8vdGVtcG1haWwubG9sJyxcclxuICAnc2VjLWNoLXVhJzogJ1wiTWljcm9zb2Z0IEVkZ2VcIjt2PVwiMTQzXCIsIFwiQ2hyb21pdW1cIjt2PVwiMTQzXCIsIFwiTm90IEEoQnJhbmRcIjt2PVwiMjRcIicsXHJcbiAgJ3NlYy1jaC11YS1tb2JpbGUnOiAnPzAnLFxyXG4gICdzZWMtY2gtdWEtcGxhdGZvcm0nOiAnXCJXaW5kb3dzXCInLFxyXG4gICdETlQnOiAnMScsXHJcbn07XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbChkb21haW46IHN0cmluZyB8IG51bGwgPSBudWxsKTogUHJvbWlzZTxFbWFpbEluZm8+IHtcclxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9pbmJveC9jcmVhdGVgLCB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcclxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZG9tYWluLCBjYXB0Y2hhOiBudWxsIH0pLFxyXG4gIH0pO1xyXG5cclxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gIFxyXG4gIGlmICghZGF0YS5hZGRyZXNzIHx8ICFkYXRhLnRva2VuKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbCcpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGNoYW5uZWw6IENIQU5ORUwsXHJcbiAgICBlbWFpbDogZGF0YS5hZGRyZXNzLFxyXG4gICAgdG9rZW46IGRhdGEudG9rZW4sXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyh0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XHJcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vaW5ib3g/dG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQodG9rZW4pfWAsIHtcclxuICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXHJcbiAgfSk7XHJcblxyXG4gIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICBcclxuICByZXR1cm4gZGF0YS5lbWFpbHMgfHwgW107XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateEmail = generateEmail;
|
|
4
|
+
exports.getEmails = getEmails;
|
|
5
|
+
const CHANNEL = 'tempmail';
|
|
6
|
+
const BASE_URL = 'https://api.tempmail.ing/api';
|
|
7
|
+
const DEFAULT_HEADERS = {
|
|
8
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36',
|
|
9
|
+
'Content-Type': 'application/json',
|
|
10
|
+
'Referer': 'https://tempmail.ing/',
|
|
11
|
+
'sec-ch-ua': '"Microsoft Edge";v="143", "Chromium";v="143", "Not A(Brand";v="24"',
|
|
12
|
+
'sec-ch-ua-mobile': '?0',
|
|
13
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
14
|
+
'DNT': '1',
|
|
15
|
+
};
|
|
16
|
+
async function generateEmail(duration = 30) {
|
|
17
|
+
const response = await fetch(`${BASE_URL}/generate`, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers: DEFAULT_HEADERS,
|
|
20
|
+
body: JSON.stringify({ duration }),
|
|
21
|
+
});
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
throw new Error(`Failed to generate email: ${response.status}`);
|
|
24
|
+
}
|
|
25
|
+
const data = await response.json();
|
|
26
|
+
if (!data.success) {
|
|
27
|
+
throw new Error('Failed to generate email');
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
channel: CHANNEL,
|
|
31
|
+
email: data.email.address,
|
|
32
|
+
expiresAt: data.email.expiresAt,
|
|
33
|
+
createdAt: data.email.createdAt,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async function getEmails(email) {
|
|
37
|
+
const encodedEmail = encodeURIComponent(email);
|
|
38
|
+
const response = await fetch(`${BASE_URL}/emails/${encodedEmail}`, {
|
|
39
|
+
method: 'GET',
|
|
40
|
+
headers: DEFAULT_HEADERS,
|
|
41
|
+
});
|
|
42
|
+
if (!response.ok) {
|
|
43
|
+
throw new Error(`Failed to get emails: ${response.status}`);
|
|
44
|
+
}
|
|
45
|
+
const data = await response.json();
|
|
46
|
+
if (!data.success) {
|
|
47
|
+
throw new Error('Failed to get emails');
|
|
48
|
+
}
|
|
49
|
+
return data.emails || [];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RlbXBtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZUEsc0NBdUJDO0FBRUQsOEJBa0JDO0FBeERELE1BQU0sT0FBTyxHQUFZLFVBQVUsQ0FBQztBQUNwQyxNQUFNLFFBQVEsR0FBRyw4QkFBOEIsQ0FBQztBQUVoRCxNQUFNLGVBQWUsR0FBRztJQUN0QixZQUFZLEVBQUUsaUhBQWlIO0lBQy9ILGNBQWMsRUFBRSxrQkFBa0I7SUFDbEMsU0FBUyxFQUFFLHVCQUF1QjtJQUNsQyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFSyxLQUFLLFVBQVUsYUFBYSxDQUFDLFdBQW1CLEVBQUU7SUFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLFdBQVcsRUFBRTtRQUNuRCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7S0FDbkMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1FBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7UUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztLQUNoQyxDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxTQUFTLENBQUMsS0FBYTtJQUMzQyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsV0FBVyxZQUFZLEVBQUUsRUFBRTtRQUNqRSxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxlQUFlO0tBQ3pCLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5cclxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICd0ZW1wbWFpbCc7XHJcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXBpLnRlbXBtYWlsLmluZy9hcGknO1xyXG5cclxuY29uc3QgREVGQVVMVF9IRUFERVJTID0ge1xyXG4gICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDMuMC4wLjAgU2FmYXJpLzUzNy4zNicsXHJcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAnUmVmZXJlcic6ICdodHRwczovL3RlbXBtYWlsLmluZy8nLFxyXG4gICdzZWMtY2gtdWEnOiAnXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDNcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDNcIiwgXCJOb3QgQShCcmFuZFwiO3Y9XCIyNFwiJyxcclxuICAnc2VjLWNoLXVhLW1vYmlsZSc6ICc/MCcsXHJcbiAgJ3NlYy1jaC11YS1wbGF0Zm9ybSc6ICdcIldpbmRvd3NcIicsXHJcbiAgJ0ROVCc6ICcxJyxcclxufTtcclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGR1cmF0aW9uOiBudW1iZXIgPSAzMCk6IFByb21pc2U8RW1haWxJbmZvPiB7XHJcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vZ2VuZXJhdGVgLCB7XHJcbiAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcclxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZHVyYXRpb24gfSksXHJcbiAgfSk7XHJcblxyXG4gIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgXHJcbiAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcclxuICAgIGVtYWlsOiBkYXRhLmVtYWlsLmFkZHJlc3MsXHJcbiAgICBleHBpcmVzQXQ6IGRhdGEuZW1haWwuZXhwaXJlc0F0LFxyXG4gICAgY3JlYXRlZEF0OiBkYXRhLmVtYWlsLmNyZWF0ZWRBdCxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPEVtYWlsW10+IHtcclxuICBjb25zdCBlbmNvZGVkRW1haWwgPSBlbmNvZGVVUklDb21wb25lbnQoZW1haWwpO1xyXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2VtYWlscy8ke2VuY29kZWRFbWFpbH1gLCB7XHJcbiAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxyXG4gIH0pO1xyXG5cclxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgZW1haWxzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgXHJcbiAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdldCBlbWFpbHMnKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBkYXRhLmVtYWlscyB8fCBbXTtcclxufVxyXG4iXX0=
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type Channel = 'tempmail' | 'linshi-email' | 'tempmail-lol' | 'chatgpt-org-uk';
|
|
2
|
+
export interface EmailInfo {
|
|
3
|
+
channel: Channel;
|
|
4
|
+
email: string;
|
|
5
|
+
token?: string;
|
|
6
|
+
expiresAt?: string | number;
|
|
7
|
+
createdAt?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface Email {
|
|
10
|
+
id?: string | number;
|
|
11
|
+
eid?: string;
|
|
12
|
+
_id?: string;
|
|
13
|
+
from?: string;
|
|
14
|
+
from_address?: string;
|
|
15
|
+
from_name?: string;
|
|
16
|
+
address_from?: string;
|
|
17
|
+
name_from?: string;
|
|
18
|
+
to?: string;
|
|
19
|
+
name_to?: string;
|
|
20
|
+
email_address?: string;
|
|
21
|
+
subject?: string;
|
|
22
|
+
e_subject?: string;
|
|
23
|
+
body?: string;
|
|
24
|
+
text?: string;
|
|
25
|
+
content?: string;
|
|
26
|
+
html?: string;
|
|
27
|
+
html_content?: string;
|
|
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;
|
|
37
|
+
}
|
|
38
|
+
export interface GetEmailsResult {
|
|
39
|
+
channel: Channel;
|
|
40
|
+
email: string;
|
|
41
|
+
emails: Email[];
|
|
42
|
+
success: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface GenerateEmailOptions {
|
|
45
|
+
channel?: Channel;
|
|
46
|
+
duration?: number;
|
|
47
|
+
domain?: string | null;
|
|
48
|
+
}
|
|
49
|
+
export interface GetEmailsOptions {
|
|
50
|
+
channel: Channel;
|
|
51
|
+
email: string;
|
|
52
|
+
token?: string;
|
|
53
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENoYW5uZWwgPSAndGVtcG1haWwnIHwgJ2xpbnNoaS1lbWFpbCcgfCAndGVtcG1haWwtbG9sJyB8ICdjaGF0Z3B0LW9yZy11ayc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsSW5mbyB7XHJcbiAgY2hhbm5lbDogQ2hhbm5lbDtcclxuICBlbWFpbDogc3RyaW5nO1xyXG4gIHRva2VuPzogc3RyaW5nO1xyXG4gIGV4cGlyZXNBdD86IHN0cmluZyB8IG51bWJlcjtcclxuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRW1haWwge1xyXG4gIGlkPzogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGVpZD86IHN0cmluZztcclxuICBfaWQ/OiBzdHJpbmc7XHJcbiAgZnJvbT86IHN0cmluZztcclxuICBmcm9tX2FkZHJlc3M/OiBzdHJpbmc7XHJcbiAgZnJvbV9uYW1lPzogc3RyaW5nO1xyXG4gIGFkZHJlc3NfZnJvbT86IHN0cmluZztcclxuICBuYW1lX2Zyb20/OiBzdHJpbmc7XHJcbiAgdG8/OiBzdHJpbmc7XHJcbiAgbmFtZV90bz86IHN0cmluZztcclxuICBlbWFpbF9hZGRyZXNzPzogc3RyaW5nO1xyXG4gIHN1YmplY3Q/OiBzdHJpbmc7XHJcbiAgZV9zdWJqZWN0Pzogc3RyaW5nO1xyXG4gIGJvZHk/OiBzdHJpbmc7XHJcbiAgdGV4dD86IHN0cmluZztcclxuICBjb250ZW50Pzogc3RyaW5nO1xyXG4gIGh0bWw/OiBzdHJpbmc7XHJcbiAgaHRtbF9jb250ZW50Pzogc3RyaW5nO1xyXG4gIGRhdGU/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgZV9kYXRlPzogbnVtYmVyO1xyXG4gIHRpbWVzdGFtcD86IG51bWJlcjtcclxuICByZWNlaXZlZF9hdD86IHN0cmluZztcclxuICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xyXG4gIGNyZWF0ZWRBdD86IHN0cmluZztcclxuICBpc19yZWFkPzogbnVtYmVyO1xyXG4gIGhhc19odG1sPzogYm9vbGVhbjtcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW1haWxzUmVzdWx0IHtcclxuICBjaGFubmVsOiBDaGFubmVsO1xyXG4gIGVtYWlsOiBzdHJpbmc7XHJcbiAgZW1haWxzOiBFbWFpbFtdO1xyXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVFbWFpbE9wdGlvbnMge1xyXG4gIGNoYW5uZWw/OiBDaGFubmVsO1xyXG4gIGR1cmF0aW9uPzogbnVtYmVyO1xyXG4gIGRvbWFpbj86IHN0cmluZyB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW1haWxzT3B0aW9ucyB7XHJcbiAgY2hhbm5lbDogQ2hhbm5lbDtcclxuICBlbWFpbDogc3RyaW5nO1xyXG4gIHRva2VuPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tempmail-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "临时邮箱 SDK - 支持多个临时邮箱服务商",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"test": "ts-node test/example.ts"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"temp-email",
|
|
13
|
+
"temporary-email",
|
|
14
|
+
"disposable-email",
|
|
15
|
+
"tempmail",
|
|
16
|
+
"email",
|
|
17
|
+
"临时邮箱"
|
|
18
|
+
],
|
|
19
|
+
"author": "XxxXTeam",
|
|
20
|
+
"license": "GPL-3.0",
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/XxxXTeam/tempmail-sdk.git"
|
|
24
|
+
},
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/XxxXTeam/tempmail-sdk/issues"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://github.com/XxxXTeam/tempmail-sdk#readme",
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^20.0.0",
|
|
31
|
+
"ts-node": "^10.9.0",
|
|
32
|
+
"typescript": "^5.0.0"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"readline": "^1.3.0"
|
|
36
|
+
}
|
|
37
|
+
}
|
package/src/global.d.ts
ADDED
package/src/index.ts
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as tempmail from './providers/tempmail';
|
|
2
|
+
import * as linshiEmail from './providers/linshi-email';
|
|
3
|
+
import * as tempmailLol from './providers/tempmail-lol';
|
|
4
|
+
import * as chatgptOrgUk from './providers/chatgpt-org-uk';
|
|
5
|
+
import { Channel, EmailInfo, Email, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
|
|
6
|
+
|
|
7
|
+
export { Channel, EmailInfo, Email, GetEmailsResult, GenerateEmailOptions, GetEmailsOptions } from './types';
|
|
8
|
+
|
|
9
|
+
const providers = {
|
|
10
|
+
'tempmail': tempmail,
|
|
11
|
+
'linshi-email': linshiEmail,
|
|
12
|
+
'tempmail-lol': tempmailLol,
|
|
13
|
+
'chatgpt-org-uk': chatgptOrgUk,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const allChannels: Channel[] = ['tempmail', 'linshi-email', 'tempmail-lol', 'chatgpt-org-uk'];
|
|
17
|
+
|
|
18
|
+
export interface ChannelInfo {
|
|
19
|
+
channel: Channel;
|
|
20
|
+
name: string;
|
|
21
|
+
website: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const channelInfoMap: Record<Channel, ChannelInfo> = {
|
|
25
|
+
'tempmail': { channel: 'tempmail', name: 'TempMail', website: 'tempmail.ing' },
|
|
26
|
+
'linshi-email': { channel: 'linshi-email', name: '临时邮箱', website: 'linshi-email.com' },
|
|
27
|
+
'tempmail-lol': { channel: 'tempmail-lol', name: 'TempMail LOL', website: 'tempmail.lol' },
|
|
28
|
+
'chatgpt-org-uk': { channel: 'chatgpt-org-uk', name: 'ChatGPT Mail', website: 'mail.chatgpt.org.uk' },
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 获取所有支持的渠道列表
|
|
33
|
+
*/
|
|
34
|
+
export function listChannels(): ChannelInfo[] {
|
|
35
|
+
return allChannels.map(ch => channelInfoMap[ch]);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 获取指定渠道信息
|
|
40
|
+
*/
|
|
41
|
+
export function getChannelInfo(channel: Channel): ChannelInfo | undefined {
|
|
42
|
+
return channelInfoMap[channel];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export async function generateEmail(options: GenerateEmailOptions = {}): Promise<EmailInfo> {
|
|
46
|
+
const channel = options.channel || allChannels[Math.floor(Math.random() * allChannels.length)];
|
|
47
|
+
|
|
48
|
+
switch (channel) {
|
|
49
|
+
case 'tempmail':
|
|
50
|
+
return tempmail.generateEmail(options.duration || 30);
|
|
51
|
+
case 'linshi-email':
|
|
52
|
+
return linshiEmail.generateEmail();
|
|
53
|
+
case 'tempmail-lol':
|
|
54
|
+
return tempmailLol.generateEmail(options.domain || null);
|
|
55
|
+
case 'chatgpt-org-uk':
|
|
56
|
+
return chatgptOrgUk.generateEmail();
|
|
57
|
+
default:
|
|
58
|
+
throw new Error(`Unknown channel: ${channel}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export async function getEmails(options: GetEmailsOptions): Promise<GetEmailsResult> {
|
|
63
|
+
const { channel, email, token } = options;
|
|
64
|
+
|
|
65
|
+
if (!channel) {
|
|
66
|
+
throw new Error('Channel is required');
|
|
67
|
+
}
|
|
68
|
+
if (!email && channel !== 'tempmail-lol') {
|
|
69
|
+
throw new Error('Email is required');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
let emails: Email[] = [];
|
|
73
|
+
|
|
74
|
+
switch (channel) {
|
|
75
|
+
case 'tempmail':
|
|
76
|
+
emails = await tempmail.getEmails(email);
|
|
77
|
+
break;
|
|
78
|
+
case 'linshi-email':
|
|
79
|
+
emails = await linshiEmail.getEmails(email);
|
|
80
|
+
break;
|
|
81
|
+
case 'tempmail-lol':
|
|
82
|
+
if (!token) {
|
|
83
|
+
throw new Error('Token is required for tempmail-lol channel');
|
|
84
|
+
}
|
|
85
|
+
emails = await tempmailLol.getEmails(token);
|
|
86
|
+
break;
|
|
87
|
+
case 'chatgpt-org-uk':
|
|
88
|
+
emails = await chatgptOrgUk.getEmails(email);
|
|
89
|
+
break;
|
|
90
|
+
default:
|
|
91
|
+
throw new Error(`Unknown channel: ${channel}`);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
channel,
|
|
96
|
+
email,
|
|
97
|
+
emails,
|
|
98
|
+
success: true,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export class TempEmailClient {
|
|
103
|
+
private emailInfo: EmailInfo | null = null;
|
|
104
|
+
|
|
105
|
+
async generate(options: GenerateEmailOptions = {}): Promise<EmailInfo> {
|
|
106
|
+
this.emailInfo = await generateEmail(options);
|
|
107
|
+
return this.emailInfo;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async getEmails(): Promise<GetEmailsResult> {
|
|
111
|
+
if (!this.emailInfo) {
|
|
112
|
+
throw new Error('No email generated. Call generate() first.');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return getEmails({
|
|
116
|
+
channel: this.emailInfo.channel,
|
|
117
|
+
email: this.emailInfo.email,
|
|
118
|
+
token: this.emailInfo.token,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
getEmailInfo(): EmailInfo | null {
|
|
123
|
+
return this.emailInfo;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export default {
|
|
128
|
+
listChannels,
|
|
129
|
+
getChannelInfo,
|
|
130
|
+
generateEmail,
|
|
131
|
+
getEmails,
|
|
132
|
+
TempEmailClient,
|
|
133
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { EmailInfo, Email, Channel } from '../types';
|
|
2
|
+
|
|
3
|
+
const CHANNEL: Channel = 'chatgpt-org-uk';
|
|
4
|
+
const BASE_URL = 'https://mail.chatgpt.org.uk/api';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_HEADERS = {
|
|
7
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36',
|
|
8
|
+
'Content-Type': 'application/json',
|
|
9
|
+
'Accept': '*/*',
|
|
10
|
+
'Referer': 'https://mail.chatgpt.org.uk/',
|
|
11
|
+
'sec-ch-ua': '"Microsoft Edge";v="143", "Chromium";v="143", "Not A(Brand";v="24"',
|
|
12
|
+
'sec-ch-ua-mobile': '?0',
|
|
13
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
14
|
+
'DNT': '1',
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export async function generateEmail(): Promise<EmailInfo> {
|
|
18
|
+
const response = await fetch(`${BASE_URL}/generate-email`, {
|
|
19
|
+
method: 'GET',
|
|
20
|
+
headers: DEFAULT_HEADERS,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
throw new Error(`Failed to generate email: ${response.status}`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const data = await response.json();
|
|
28
|
+
|
|
29
|
+
if (!data.success) {
|
|
30
|
+
throw new Error('Failed to generate email');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
channel: CHANNEL,
|
|
35
|
+
email: data.data.email,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export async function getEmails(email: string): Promise<Email[]> {
|
|
40
|
+
const encodedEmail = encodeURIComponent(email);
|
|
41
|
+
const response = await fetch(`${BASE_URL}/emails?email=${encodedEmail}`, {
|
|
42
|
+
method: 'GET',
|
|
43
|
+
headers: DEFAULT_HEADERS,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
throw new Error(`Failed to get emails: ${response.status}`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const data = await response.json();
|
|
51
|
+
|
|
52
|
+
if (!data.success) {
|
|
53
|
+
throw new Error('Failed to get emails');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return data.data?.emails || [];
|
|
57
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { EmailInfo, Email, Channel } from '../types';
|
|
2
|
+
|
|
3
|
+
const CHANNEL: Channel = 'linshi-email';
|
|
4
|
+
const BASE_URL = 'https://www.linshi-email.com/api/v1';
|
|
5
|
+
const API_KEY = '552562b8524879814776e52bc8de5c9f';
|
|
6
|
+
|
|
7
|
+
const DEFAULT_HEADERS = {
|
|
8
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36',
|
|
9
|
+
'Content-Type': 'application/json',
|
|
10
|
+
'Origin': 'https://www.linshi-email.com',
|
|
11
|
+
'Referer': 'https://www.linshi-email.com/',
|
|
12
|
+
'sec-ch-ua': '"Microsoft Edge";v="143", "Chromium";v="143", "Not A(Brand";v="24"',
|
|
13
|
+
'sec-ch-ua-mobile': '?0',
|
|
14
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
15
|
+
'DNT': '1',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export async function generateEmail(): Promise<EmailInfo> {
|
|
19
|
+
const response = await fetch(`${BASE_URL}/email/${API_KEY}`, {
|
|
20
|
+
method: 'POST',
|
|
21
|
+
headers: DEFAULT_HEADERS,
|
|
22
|
+
body: JSON.stringify({}),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
throw new Error(`Failed to generate email: ${response.status}`);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const data = await response.json();
|
|
30
|
+
|
|
31
|
+
if (data.status !== 'ok') {
|
|
32
|
+
throw new Error('Failed to generate email');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
channel: CHANNEL,
|
|
37
|
+
email: data.data.email,
|
|
38
|
+
expiresAt: data.data.expired,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export async function getEmails(email: string): Promise<Email[]> {
|
|
43
|
+
const encodedEmail = encodeURIComponent(email);
|
|
44
|
+
const timestamp = Date.now();
|
|
45
|
+
const response = await fetch(`${BASE_URL}/refreshmessage/${API_KEY}/${encodedEmail}?t=${timestamp}`, {
|
|
46
|
+
method: 'GET',
|
|
47
|
+
headers: DEFAULT_HEADERS,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
throw new Error(`Failed to get emails: ${response.status}`);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const data = await response.json();
|
|
55
|
+
|
|
56
|
+
if (data.status !== 'ok') {
|
|
57
|
+
throw new Error('Failed to get emails');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return data.list || [];
|
|
61
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { EmailInfo, Email, Channel } from '../types';
|
|
2
|
+
|
|
3
|
+
const CHANNEL: Channel = 'tempmail-lol';
|
|
4
|
+
const BASE_URL = 'https://api.tempmail.lol/v2';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_HEADERS = {
|
|
7
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36',
|
|
8
|
+
'Content-Type': 'application/json',
|
|
9
|
+
'Origin': 'https://tempmail.lol',
|
|
10
|
+
'sec-ch-ua': '"Microsoft Edge";v="143", "Chromium";v="143", "Not A(Brand";v="24"',
|
|
11
|
+
'sec-ch-ua-mobile': '?0',
|
|
12
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
13
|
+
'DNT': '1',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export async function generateEmail(domain: string | null = null): Promise<EmailInfo> {
|
|
17
|
+
const response = await fetch(`${BASE_URL}/inbox/create`, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers: DEFAULT_HEADERS,
|
|
20
|
+
body: JSON.stringify({ domain, captcha: null }),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
throw new Error(`Failed to generate email: ${response.status}`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const data = await response.json();
|
|
28
|
+
|
|
29
|
+
if (!data.address || !data.token) {
|
|
30
|
+
throw new Error('Failed to generate email');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
channel: CHANNEL,
|
|
35
|
+
email: data.address,
|
|
36
|
+
token: data.token,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export async function getEmails(token: string): Promise<Email[]> {
|
|
41
|
+
const response = await fetch(`${BASE_URL}/inbox?token=${encodeURIComponent(token)}`, {
|
|
42
|
+
method: 'GET',
|
|
43
|
+
headers: DEFAULT_HEADERS,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
throw new Error(`Failed to get emails: ${response.status}`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const data = await response.json();
|
|
51
|
+
|
|
52
|
+
return data.emails || [];
|
|
53
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { EmailInfo, Email, Channel } from '../types';
|
|
2
|
+
|
|
3
|
+
const CHANNEL: Channel = 'tempmail';
|
|
4
|
+
const BASE_URL = 'https://api.tempmail.ing/api';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_HEADERS = {
|
|
7
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36',
|
|
8
|
+
'Content-Type': 'application/json',
|
|
9
|
+
'Referer': 'https://tempmail.ing/',
|
|
10
|
+
'sec-ch-ua': '"Microsoft Edge";v="143", "Chromium";v="143", "Not A(Brand";v="24"',
|
|
11
|
+
'sec-ch-ua-mobile': '?0',
|
|
12
|
+
'sec-ch-ua-platform': '"Windows"',
|
|
13
|
+
'DNT': '1',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export async function generateEmail(duration: number = 30): Promise<EmailInfo> {
|
|
17
|
+
const response = await fetch(`${BASE_URL}/generate`, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers: DEFAULT_HEADERS,
|
|
20
|
+
body: JSON.stringify({ duration }),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
throw new Error(`Failed to generate email: ${response.status}`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const data = await response.json();
|
|
28
|
+
|
|
29
|
+
if (!data.success) {
|
|
30
|
+
throw new Error('Failed to generate email');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
channel: CHANNEL,
|
|
35
|
+
email: data.email.address,
|
|
36
|
+
expiresAt: data.email.expiresAt,
|
|
37
|
+
createdAt: data.email.createdAt,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export async function getEmails(email: string): Promise<Email[]> {
|
|
42
|
+
const encodedEmail = encodeURIComponent(email);
|
|
43
|
+
const response = await fetch(`${BASE_URL}/emails/${encodedEmail}`, {
|
|
44
|
+
method: 'GET',
|
|
45
|
+
headers: DEFAULT_HEADERS,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
throw new Error(`Failed to get emails: ${response.status}`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const data = await response.json();
|
|
53
|
+
|
|
54
|
+
if (!data.success) {
|
|
55
|
+
throw new Error('Failed to get emails');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return data.emails || [];
|
|
59
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export type Channel = 'tempmail' | 'linshi-email' | 'tempmail-lol' | 'chatgpt-org-uk';
|
|
2
|
+
|
|
3
|
+
export interface EmailInfo {
|
|
4
|
+
channel: Channel;
|
|
5
|
+
email: string;
|
|
6
|
+
token?: string;
|
|
7
|
+
expiresAt?: string | number;
|
|
8
|
+
createdAt?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface Email {
|
|
12
|
+
id?: string | number;
|
|
13
|
+
eid?: string;
|
|
14
|
+
_id?: string;
|
|
15
|
+
from?: string;
|
|
16
|
+
from_address?: string;
|
|
17
|
+
from_name?: string;
|
|
18
|
+
address_from?: string;
|
|
19
|
+
name_from?: string;
|
|
20
|
+
to?: string;
|
|
21
|
+
name_to?: string;
|
|
22
|
+
email_address?: string;
|
|
23
|
+
subject?: string;
|
|
24
|
+
e_subject?: string;
|
|
25
|
+
body?: string;
|
|
26
|
+
text?: string;
|
|
27
|
+
content?: string;
|
|
28
|
+
html?: string;
|
|
29
|
+
html_content?: string;
|
|
30
|
+
date?: string | number;
|
|
31
|
+
e_date?: number;
|
|
32
|
+
timestamp?: number;
|
|
33
|
+
received_at?: string;
|
|
34
|
+
created_at?: string;
|
|
35
|
+
createdAt?: string;
|
|
36
|
+
is_read?: number;
|
|
37
|
+
has_html?: boolean;
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface GetEmailsResult {
|
|
42
|
+
channel: Channel;
|
|
43
|
+
email: string;
|
|
44
|
+
emails: Email[];
|
|
45
|
+
success: boolean;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface GenerateEmailOptions {
|
|
49
|
+
channel?: Channel;
|
|
50
|
+
duration?: number;
|
|
51
|
+
domain?: string | null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface GetEmailsOptions {
|
|
55
|
+
channel: Channel;
|
|
56
|
+
email: string;
|
|
57
|
+
token?: string;
|
|
58
|
+
}
|