@emailcheck/email-validator-js 5.0.0 → 5.1.0-beta.1
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 +40 -4
- package/dist/cli/index.js +34 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +36 -3
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +36 -2
- package/dist/index.js.map +1 -1
- package/dist/sender-strategy.d.ts +26 -0
- package/dist/serverless/adapters/aws-lambda.cjs.js +5 -5
- package/dist/serverless/adapters/aws-lambda.cjs.js.map +1 -1
- package/dist/serverless/adapters/aws-lambda.esm.js +5 -5
- package/dist/serverless/adapters/aws-lambda.esm.js.map +1 -1
- package/dist/serverless/adapters/azure.cjs.js +5 -5
- package/dist/serverless/adapters/azure.cjs.js.map +1 -1
- package/dist/serverless/adapters/azure.esm.js +5 -5
- package/dist/serverless/adapters/azure.esm.js.map +1 -1
- package/dist/serverless/adapters/cloudflare.cjs.js +5 -5
- package/dist/serverless/adapters/cloudflare.cjs.js.map +1 -1
- package/dist/serverless/adapters/cloudflare.esm.js +5 -5
- package/dist/serverless/adapters/cloudflare.esm.js.map +1 -1
- package/dist/serverless/adapters/gcp.cjs.js +5 -5
- package/dist/serverless/adapters/gcp.cjs.js.map +1 -1
- package/dist/serverless/adapters/gcp.esm.js +5 -5
- package/dist/serverless/adapters/gcp.esm.js.map +1 -1
- package/dist/serverless/adapters/netlify.cjs.js +5 -5
- package/dist/serverless/adapters/netlify.cjs.js.map +1 -1
- package/dist/serverless/adapters/netlify.esm.js +5 -5
- package/dist/serverless/adapters/netlify.esm.js.map +1 -1
- package/dist/serverless/adapters/vercel.cjs.js +5 -5
- package/dist/serverless/adapters/vercel.cjs.js.map +1 -1
- package/dist/serverless/adapters/vercel.esm.js +5 -5
- package/dist/serverless/adapters/vercel.esm.js.map +1 -1
- package/dist/serverless/index.cjs.js +5 -5
- package/dist/serverless/index.cjs.js.map +1 -1
- package/dist/serverless/index.esm.js +5 -5
- package/dist/serverless/index.esm.js.map +1 -1
- package/dist/serverless/verifier.cjs.js +5 -5
- package/dist/serverless/verifier.cjs.js.map +1 -1
- package/dist/serverless/verifier.esm.js +5 -5
- package/dist/serverless/verifier.esm.js.map +1 -1
- package/dist/serverless/verifier.min.js +1 -1
- package/dist/types.d.ts +72 -0
- package/package.json +3 -3
package/dist/types.d.ts
CHANGED
|
@@ -139,6 +139,22 @@ export interface VerifyEmailParams {
|
|
|
139
139
|
* and any per-MX hint cached from a previous probe.
|
|
140
140
|
*/
|
|
141
141
|
smtpPort?: number;
|
|
142
|
+
/**
|
|
143
|
+
* Strategy for the `MAIL FROM:` envelope sender during the SMTP probe.
|
|
144
|
+
* See `SMTPSenderStrategy` for the menu. Picking a deliberate strategy
|
|
145
|
+
* (e.g. `{ kind: 'null-sender' }`) reduces spam-flagging vs. the library
|
|
146
|
+
* default of `<recipient@domain>`. Default: unset → uses recipient address
|
|
147
|
+
* (preserved for backwards compatibility, but not recommended for
|
|
148
|
+
* production probes).
|
|
149
|
+
*/
|
|
150
|
+
smtpSender?: SMTPSenderStrategy;
|
|
151
|
+
/**
|
|
152
|
+
* EHLO/HELO hostname presented to the MX during the SMTP probe. Should be
|
|
153
|
+
* a real FQDN — `'localhost'` from a public IP is a spam-bot signature
|
|
154
|
+
* and gets rejected by careful MXes. Default: `'localhost'` (preserved for
|
|
155
|
+
* backwards compatibility; override in production).
|
|
156
|
+
*/
|
|
157
|
+
smtpHeloHostname?: string;
|
|
142
158
|
/** Per-WHOIS-query timeout in milliseconds. Default: `5000`. */
|
|
143
159
|
whoisTimeoutMs?: number;
|
|
144
160
|
/** Optional shared cache for MX, WHOIS, disposable / free, SMTP, and domain results. */
|
|
@@ -367,6 +383,50 @@ export interface SMTPSequence {
|
|
|
367
383
|
/** Override MAIL FROM payload — supply with angle brackets or `<>` for null sender. */
|
|
368
384
|
from?: string;
|
|
369
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* High-level policy for picking the `MAIL FROM:` payload sent during SMTP
|
|
388
|
+
* verification. Most callers should use this rather than `SMTPSequence.from`.
|
|
389
|
+
*
|
|
390
|
+
* Why this matters: `MAIL FROM:` is the single biggest spam-fingerprint on a
|
|
391
|
+
* verification probe. The library's historical default (`<recipient@domain>`)
|
|
392
|
+
* is exactly what blocklists key on — sender == recipient is the textbook
|
|
393
|
+
* "fake bounce probe" pattern. Picking a deliberate strategy lets you choose
|
|
394
|
+
* how the probe presents itself to the MX:
|
|
395
|
+
*
|
|
396
|
+
* - `'null-sender'`: RFC 5321 §4.5.5 null reverse-path `<>`. DSN/bounce-shaped.
|
|
397
|
+
* Best deliverability vs spam-flagging on Gmail / Outlook (they whitelist
|
|
398
|
+
* `<>` so they don't recursively bounce a bounce). Some strict gateways
|
|
399
|
+
* (Yahoo / Proofpoint / Mimecast) reject `<>` from unknown IPs — those
|
|
400
|
+
* rejections are clean `550`s, they don't burn IP reputation.
|
|
401
|
+
* - `'fixed'`: a real address on a domain you own (with valid SPF / PTR /
|
|
402
|
+
* DMARC). Best deliverability when properly authenticated; worst when not.
|
|
403
|
+
* - `'random-at-recipient'`: random local-part on the recipient's own domain
|
|
404
|
+
* (e.g. `<probe-a3x9…@gmail.com>` when probing `alice@gmail.com`). Looks
|
|
405
|
+
* like internal-domain mail to MTAs that prefer same-envelope-domain.
|
|
406
|
+
* - `'random-at-domain'`: random local-part on a fixed sender domain. Useful
|
|
407
|
+
* when you control a domain but want unique probe envelopes per call.
|
|
408
|
+
* - `'custom'`: full escape hatch — receives the recipient, returns the
|
|
409
|
+
* literal `MAIL FROM:` payload (with angle brackets).
|
|
410
|
+
*/
|
|
411
|
+
export type SMTPSenderStrategy = {
|
|
412
|
+
kind: 'null-sender';
|
|
413
|
+
} | {
|
|
414
|
+
kind: 'fixed';
|
|
415
|
+
address: string;
|
|
416
|
+
} | {
|
|
417
|
+
kind: 'random-at-recipient';
|
|
418
|
+
localPrefix?: string;
|
|
419
|
+
} | {
|
|
420
|
+
kind: 'random-at-domain';
|
|
421
|
+
domain: string;
|
|
422
|
+
localPrefix?: string;
|
|
423
|
+
} | {
|
|
424
|
+
kind: 'custom';
|
|
425
|
+
build: (recipient: {
|
|
426
|
+
local: string;
|
|
427
|
+
domain: string;
|
|
428
|
+
}) => string;
|
|
429
|
+
};
|
|
370
430
|
/**
|
|
371
431
|
* Optional retry policy for connection-class failures (timeout / connection
|
|
372
432
|
* error / connection closed) on a single MX × port. Definitive answers
|
|
@@ -499,6 +559,18 @@ export interface SMTPVerifyOptions {
|
|
|
499
559
|
* Default: no retries.
|
|
500
560
|
*/
|
|
501
561
|
retry?: RetryPolicy;
|
|
562
|
+
/**
|
|
563
|
+
* Strategy for picking the `MAIL FROM:` envelope sender. See
|
|
564
|
+
* `SMTPSenderStrategy` for the full menu (`null-sender` / `fixed` /
|
|
565
|
+
* `random-at-recipient` / `random-at-domain` / `custom`).
|
|
566
|
+
*
|
|
567
|
+
* When set, this overrides any `sequence.from`. When unset, the probe falls
|
|
568
|
+
* back to `sequence.from` (legacy low-level override) and finally to the
|
|
569
|
+
* default `<local@domain>` (the recipient's own address — note that this
|
|
570
|
+
* default is the textbook spam-probe fingerprint, so opting into a real
|
|
571
|
+
* strategy is recommended for production use).
|
|
572
|
+
*/
|
|
573
|
+
sender?: SMTPSenderStrategy;
|
|
502
574
|
/**
|
|
503
575
|
* Override the per-attempt SMTP step list. Defaults to
|
|
504
576
|
* `[greeting, ehlo, startTls, mailFrom, rcptTo]` — covering the entire
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emailcheck/email-validator-js",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.1.0-beta.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Advanced email validation with MX records, SMTP verification, disposable email detection, batch processing, and caching. Production-ready with TypeScript support.",
|
|
6
6
|
"keywords": [
|
|
@@ -150,8 +150,8 @@
|
|
|
150
150
|
"conventional-changelog-conventionalcommits": "^9.3.1",
|
|
151
151
|
"esbuild": "^0.28.0",
|
|
152
152
|
"husky": "9.1.7",
|
|
153
|
-
"lint-staged": "
|
|
154
|
-
"rollup": "^4.60.
|
|
153
|
+
"lint-staged": "17.0.2",
|
|
154
|
+
"rollup": "^4.60.3",
|
|
155
155
|
"rollup-plugin-esbuild": "^6.2.1",
|
|
156
156
|
"semantic-release": "^25.0.3",
|
|
157
157
|
"tslib": "^2.8.1",
|